Skip to content

Commit

Permalink
[lldb/test] Move and improve TestPlatformProcessConnect.py
Browse files Browse the repository at this point in the history
Although it is located under tools/lldb-server, this test is very
different that other lldb-server tests. The most important distinction
is that it does not test lldb-server directly, but rather interacts with
it through the lldb client. It also tests the relevant client
functionality (the platform connect command, which is even admitted in
the test name). The fact that this test is structured as a lldb-server
test means it cannot access most of the goodies available to the
"normal" lldb tests (the runCmd function, which it reimplements; the
run_break_set_by_symbol utility function; etc.).

This patch makes it a full-fledged lldb this, and rewrites the relevant
bits to make use of the standard features. I also move the test into the
"commands" subtree to better reflect its new status.
  • Loading branch information
labath committed Feb 10, 2021
1 parent 4692bb4 commit d77b04e
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 15 deletions.
Expand Up @@ -5,14 +5,16 @@
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil

class TestPlatformProcessConnect(gdbremote_testcase.GdbRemoteTestCaseBase):
class TestPlatformProcessConnect(TestBase):
mydir = TestBase.compute_mydir(__file__)
NO_DEBUG_INFO_TESTCASE = True

@skipIfRemote
@expectedFailureAll(hostoslist=["windows"], triple='.*-android')
@skipIfWindows # lldb-server does not terminate correctly
@skipIfDarwin # lldb-server not found correctly
@skipIf(oslist=["linux"], archs=["arm", "aarch64"]) # Fails randomly
@add_test_categories(["lldb-server"])
def test_platform_process_connect(self):
self.build()

Expand All @@ -35,28 +37,18 @@ def test_platform_process_connect(self):

socket_id = lldbutil.wait_for_file_on_target(self, port_file)

self.dbg.SetAsync(False)
new_platform = lldb.SBPlatform("remote-" + self.getPlatform())
self.dbg.SetSelectedPlatform(new_platform)

connect_url = "connect://[%s]:%s" % (hostname, socket_id)
self.runCmd("platform connect %s" % connect_url)

command = "platform connect %s" % (connect_url)
result = lldb.SBCommandReturnObject()
self.dbg.GetCommandInterpreter().HandleCommand(command, result)
self.assertTrue(
result.Succeeded(),
"platform process connect failed: %s" %
result.GetError())
lldbutil.run_break_set_by_symbol(self, "main")
process = self.process()

target = self.dbg.GetSelectedTarget()
process = target.GetProcess()
thread = process.GetThreadAtIndex(0)

breakpoint = target.BreakpointCreateByName("main")
process.Continue()

frame = thread.GetFrameAtIndex(0)
frame = self.frame()
self.assertEqual(frame.GetFunction().GetName(), "main")
self.assertEqual(frame.FindVariable("argc").GetValueAsSigned(), 2)
process.Continue()

0 comments on commit d77b04e

Please sign in to comment.