summaryrefslogtreecommitdiffstats
path: root/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2016-01-06 20:12:03 +0000
committerdim <dim@FreeBSD.org>2016-01-06 20:12:03 +0000
commit78b9749c0a4ea980a8b934645da6ae98fcc665e8 (patch)
treedd2a1ddf0476664c2b823409c36cbccd52662ca7 /packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py
parent60cb593f9d55fa5ca7a5372b731f2330345b4b9a (diff)
downloadFreeBSD-src-78b9749c0a4ea980a8b934645da6ae98fcc665e8.zip
FreeBSD-src-78b9749c0a4ea980a8b934645da6ae98fcc665e8.tar.gz
Vendor import of lldb trunk r256945:
https://llvm.org/svn/llvm-project/lldb/trunk@256945
Diffstat (limited to 'packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py')
-rw-r--r--packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py b/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py
new file mode 100644
index 0000000..9035237
--- /dev/null
+++ b/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py
@@ -0,0 +1,87 @@
+from __future__ import print_function
+
+import gdbremote_testcase
+import lldbgdbserverutils
+import re
+import select
+import socket
+import time
+from lldbsuite.test.lldbtest import *
+
+class TestStubReverseConnect(gdbremote_testcase.GdbRemoteTestCaseBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ _DEFAULT_TIMEOUT = 20
+
+ def setUp(self):
+ # Set up the test.
+ gdbremote_testcase.GdbRemoteTestCaseBase.setUp(self)
+
+ # Create a listener on a local port.
+ self.listener_socket = self.create_listener_socket()
+ self.assertIsNotNone(self.listener_socket)
+ self.listener_port = self.listener_socket.getsockname()[1]
+
+ def create_listener_socket(self, timeout_seconds=_DEFAULT_TIMEOUT):
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.assertIsNotNone(sock)
+
+ sock.settimeout(timeout_seconds)
+ sock.bind(("127.0.0.1",0))
+ sock.listen(1)
+
+ def tear_down_listener():
+ try:
+ sock.shutdown(socket.SHUT_RDWR)
+ except:
+ # ignore
+ None
+
+ self.addTearDownHook(tear_down_listener)
+ return sock
+
+ def reverse_connect_works(self):
+ # Indicate stub startup should do a reverse connect.
+ appended_stub_args = ["--reverse-connect"]
+ if self.debug_monitor_extra_args:
+ self.debug_monitor_extra_args += appended_stub_args
+ else:
+ self.debug_monitor_extra_args = appended_stub_args
+
+ self.stub_hostname = "127.0.0.1"
+ self.port = self.listener_port
+
+ triple = self.dbg.GetSelectedPlatform().GetTriple()
+ if re.match(".*-.*-.*-android", triple):
+ self.forward_adb_port(self.port, self.port, "reverse", self.stub_device)
+
+ # Start the stub.
+ server = self.launch_debug_monitor(logfile=sys.stdout)
+ self.assertIsNotNone(server)
+ self.assertTrue(lldbgdbserverutils.process_is_running(server.pid, True))
+
+ # Listen for the stub's connection to us.
+ (stub_socket, address) = self.listener_socket.accept()
+ self.assertIsNotNone(stub_socket)
+ self.assertIsNotNone(address)
+ print("connected to stub {} on {}".format(address, stub_socket.getsockname()))
+
+ # Verify we can do the handshake. If that works, we'll call it good.
+ self.do_handshake(stub_socket, timeout_seconds=self._DEFAULT_TIMEOUT)
+
+ # Clean up.
+ stub_socket.shutdown(socket.SHUT_RDWR)
+
+ @debugserver_test
+ def test_reverse_connect_works_debugserver(self):
+ self.init_debugserver_test(use_named_pipe=False)
+ self.set_inferior_startup_launch()
+ self.reverse_connect_works()
+
+ @llgs_test
+ @skipIfRemote # reverse connect is not a supported use case for now
+ def test_reverse_connect_works_llgs(self):
+ self.init_llgs_test(use_named_pipe=False)
+ self.set_inferior_startup_launch()
+ self.reverse_connect_works()
OpenPOWER on IntegriCloud