[Lldb-commits] [lldb] [lldb/test] Retry the remote platform connection in dotest (PR #215425)
Med Ismail Bennani via lldb-commits
lldb-commits at lists.llvm.org
Mon Aug 10 15:47:16 PDT 2026
https://github.com/medismailben created https://github.com/llvm/llvm-project/pull/215425
Connecting to a remote platform through port forwarding can fail transiently even when the device and the tunnel are healthy, which aborts the entire test suite run before a single test executes.
Retry the `ConnectRemote` call a few times with a short backoff before giving up. Each failed attempt is still printed with its attempt number, and a device that is genuinely unreachable fails with the same error on every attempt and then exits as before, so this does not mask a broken connection, it only adds a few seconds in that case.
>From 84573c65cc8a2e08e3e7a6442df78a1db71f7d49 Mon Sep 17 00:00:00 2001
From: Med Ismail Bennani <ismail at bennani.ma>
Date: Mon, 10 Aug 2026 15:43:22 -0700
Subject: [PATCH] [lldb/test] Retry the remote platform connection in dotest
Connecting to a remote platform through port forwarding can fail
transiently even when the device and the tunnel are healthy, which aborts
the entire test suite run before a single test executes.
Retry the ConnectRemote call a few times with a short backoff before giving up.
Each failed attempt is still printed with its attempt number, and a device that
is genuinely unreachable fails with the same error on every attempt and then
exits as before, so this does not mask a broken connection: it only costs a few
seconds in that case.
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
---
lldb/packages/Python/lldbsuite/test/dotest.py | 28 +++++++++++++++----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py
index 2bd1d085f6ceb..680b2ab3da06f 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest.py
@@ -31,6 +31,7 @@
import subprocess
import sys
import tempfile
+import time
# Third-party modules
import unittest
@@ -1135,14 +1136,31 @@ def run_suite():
platform_connect_options = lldb.SBPlatformConnectOptions(
configuration.lldb_platform_url
)
- err = lldb.remote_platform.ConnectRemote(platform_connect_options)
+ # Connecting to a remote platform through a port forward can fail
+ # transiently while the connection itself is perfectly healthy, so
+ # retry a few times before giving up. Every attempt is reported, and
+ # a device that is genuinely unreachable still fails quickly with the
+ # same error on each attempt, so this doesn't hide a broken device.
+ max_connect_attempts = 4
+ for attempt in range(1, max_connect_attempts + 1):
+ err = lldb.remote_platform.ConnectRemote(platform_connect_options)
+ if err.Success():
+ break
+ print(
+ "error: failed to connect to remote platform using URL "
+ "'%s': %s (attempt %d of %d)"
+ % (
+ configuration.lldb_platform_url,
+ err,
+ attempt,
+ max_connect_attempts,
+ )
+ )
+ if attempt < max_connect_attempts:
+ time.sleep(attempt)
if err.Success():
print("Connected.")
else:
- print(
- "error: failed to connect to remote platform using URL '%s': %s"
- % (configuration.lldb_platform_url, err)
- )
exitTestSuite(1)
else:
configuration.lldb_platform_url = None
More information about the lldb-commits
mailing list