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