Added a basic connection test for lldb-gdbserver.
The lldb-gdbserver tests are skipped if the lldb-gdbserver exe cannot be found (currently only built for Linux and FreeBSD). The lldb-gdbserver exe is found by the LLDB_EXEC environment variable, using the same dir as the lldb exe, and then replacing lldb with lldb-gdbserver. llvm-svn: 206731
This commit is contained in:
parent
99b756db04
commit
132b880558
|
@ -0,0 +1,40 @@
|
|||
"""
|
||||
Test lldb-gdbserver operation
|
||||
"""
|
||||
|
||||
import unittest2
|
||||
import pexpect
|
||||
import sys
|
||||
from lldbtest import *
|
||||
from lldbgdbserverutils import *
|
||||
|
||||
class LldbGdbServerTestCase(TestBase):
|
||||
|
||||
mydir = TestBase.compute_mydir(__file__)
|
||||
|
||||
port = 12345
|
||||
|
||||
def setUp(self):
|
||||
TestBase.setUp(self)
|
||||
self.lldb_gdbserver_exe = get_lldb_gdbserver_exe()
|
||||
if not self.lldb_gdbserver_exe:
|
||||
self.skipTest("lldb_gdbserver exe not specified")
|
||||
|
||||
def test_exe_starts(self):
|
||||
# start the server
|
||||
server = pexpect.spawn("{} localhost:{}".format(self.lldb_gdbserver_exe, self.port))
|
||||
|
||||
# Turn on logging for what the child sends back.
|
||||
if self.TraceOn():
|
||||
server.logfile_read = sys.stdout
|
||||
|
||||
# Schedule lldb-gdbserver to be shutting down during teardown.
|
||||
def shutdown_lldb_gdbserver():
|
||||
server.close()
|
||||
self.addTearDownHook(shutdown_lldb_gdbserver)
|
||||
|
||||
# Wait until we receive the server ready message before continuing.
|
||||
server.expect_exact('Listening for a connection on localhost:{}'.format(self.port))
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest2.main()
|
|
@ -0,0 +1,25 @@
|
|||
import os
|
||||
import os.path
|
||||
|
||||
def _get_lldb_gdbserver_from_lldb(lldb_exe):
|
||||
lldb_gdbserver = os.path.join(os.path.dirname(lldb_exe), "lldb-gdbserver")
|
||||
if os.path.exists(lldb_gdbserver):
|
||||
return lldb_gdbserver
|
||||
else:
|
||||
return None
|
||||
|
||||
def get_lldb_gdbserver_exe():
|
||||
# check for --lldb-gdbserver='{some-path}' in args
|
||||
lldb_exe = os.environ["LLDB_EXEC"]
|
||||
if not lldb_exe:
|
||||
return None
|
||||
else:
|
||||
return _get_lldb_gdbserver_from_lldb(lldb_exe)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
exe = get_lldb_gdbserver_exe()
|
||||
if exe:
|
||||
print "lldb-gdbserver exe at: {}".format(exe)
|
||||
else:
|
||||
print "lldb-gdbserver not specified"
|
Loading…
Reference in New Issue