summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTodd Fiala <tfiala@google.com>2014-04-21 05:30:08 +0000
committerTodd Fiala <tfiala@google.com>2014-04-21 05:30:08 +0000
commit132b880558a7b039b859317eca5982e1f720598f (patch)
treeb54b399d73b2aad99bbf28efdb90f72b24cb7e5e
parent99b756db048b7e283fc16eacd08001d79de9339d (diff)
downloadbcm5719-llvm-132b880558a7b039b859317eca5982e1f720598f.tar.gz
bcm5719-llvm-132b880558a7b039b859317eca5982e1f720598f.zip
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
-rw-r--r--lldb/test/tools/lldb-gdbserver/TestLldbGdbServer.py40
-rw-r--r--lldb/test/tools/lldb-gdbserver/lldbgdbserverutils.py25
2 files changed, 65 insertions, 0 deletions
diff --git a/lldb/test/tools/lldb-gdbserver/TestLldbGdbServer.py b/lldb/test/tools/lldb-gdbserver/TestLldbGdbServer.py
new file mode 100644
index 00000000000..5cee310e9e3
--- /dev/null
+++ b/lldb/test/tools/lldb-gdbserver/TestLldbGdbServer.py
@@ -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()
diff --git a/lldb/test/tools/lldb-gdbserver/lldbgdbserverutils.py b/lldb/test/tools/lldb-gdbserver/lldbgdbserverutils.py
new file mode 100644
index 00000000000..0a7bca75f65
--- /dev/null
+++ b/lldb/test/tools/lldb-gdbserver/lldbgdbserverutils.py
@@ -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"
OpenPOWER on IntegriCloud