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:
Todd Fiala 2014-04-21 05:30:08 +00:00
parent 99b756db04
commit 132b880558
2 changed files with 65 additions and 0 deletions

View File

@ -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()

View File

@ -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"