[Lldb-commits] [PATCH] D85758: [lldb] Make several attempts to read the PID in TestAppleSimulatorOSType
Jonas Devlieghere via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Aug 11 10:34:05 PDT 2020
JDevlieghere created this revision.
JDevlieghere added a reviewer: aprantl.
JDevlieghere requested review of this revision.
The current code fails when the the first attempt to read the PID from stderr doesn't match the given regex. This patch changes the code to make up to 10 attempts.
Repository:
rLLDB LLDB
https://reviews.llvm.org/D85758
Files:
lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py
Index: lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py
===================================================================
--- lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py
+++ lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py
@@ -12,9 +12,13 @@
mydir = TestBase.compute_mydir(__file__)
+ # Number of attempts to read the PID from the simctl output.
+ PID_RETRIES = 10
+
def check_simulator_ostype(self, sdk, platform, arch='x86_64'):
- sim_devices_str = subprocess.check_output(['xcrun', 'simctl', 'list',
- '-j', 'devices']).decode("utf-8")
+ cmd = ['xcrun', 'simctl', 'list', '-j', 'devices']
+ self.trace(' '.join(cmd))
+ sim_devices_str = subprocess.check_output(cmd).decode("utf-8")
sim_devices = json.loads(sim_devices_str)['devices']
# Find an available simulator for the requested platform
deviceUDID = None
@@ -48,19 +52,27 @@
self.build(dictionary={ 'EXE': exe_name, 'SDKROOT': sdkroot.strip(),
'ARCH': arch })
exe_path = self.getBuildArtifact(exe_name)
- sim_launcher = subprocess.Popen(['xcrun', 'simctl', 'spawn', '-s',
- deviceUDID, exe_path,
- 'print-pid', 'sleep:10'],
- stderr=subprocess.PIPE)
+ cmd = [
+ 'xcrun', 'simctl', 'spawn', '-s', deviceUDID, exe_path,
+ 'print-pid', 'sleep:10'
+ ]
+ self.trace(' '.join(cmd))
+ sim_launcher = subprocess.Popen(cmd, stderr=subprocess.PIPE)
# Get the PID from the process output
pid = None
- while not pid:
+
+ # Make PID_RETRIES attempt to get the PID.
+ for _ in range(0, self.PID_RETRIES):
stderr = sim_launcher.stderr.readline().decode("utf-8")
- if stderr == '':
+ if not stderr:
continue
- m = re.match(r"PID: (.*)", stderr)
- self.assertIsNotNone(m)
- pid = int(m.group(1))
+ match = re.match(r"PID: (.*)", stderr)
+ if match:
+ pid = int(match.group(1))
+ break
+
+ # Make sure we found the PID.
+ self.assertIsNotNone(pid)
# Launch debug monitor attaching to the simulated process
self.init_debugserver_test()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D85758.284813.patch
Type: text/x-patch
Size: 2477 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200811/7e0f359d/attachment-0001.bin>
More information about the lldb-commits
mailing list