Author: Michał Górny Date: 2022-08-01T18:52:47+02:00 New Revision: 080692797724eefd15de00500d8d802e98230622
URL: https://github.com/llvm/llvm-project/commit/080692797724eefd15de00500d8d802e98230622 DIFF: https://github.com/llvm/llvm-project/commit/080692797724eefd15de00500d8d802e98230622.diff LOG: [lldb] [test] Fix test_c_both_nonstop flakiness Thanks to Pavel Labath for reporting this and suggesting a fix. Sponsored by: The FreeBSD Foundation Added: Modified: lldb/test/API/tools/lldb-server/TestGdbRemoteForkNonStop.py Removed: ################################################################################ diff --git a/lldb/test/API/tools/lldb-server/TestGdbRemoteForkNonStop.py b/lldb/test/API/tools/lldb-server/TestGdbRemoteForkNonStop.py index 0868c32bdd322..daaa15e86ab4a 100644 --- a/lldb/test/API/tools/lldb-server/TestGdbRemoteForkNonStop.py +++ b/lldb/test/API/tools/lldb-server/TestGdbRemoteForkNonStop.py @@ -113,6 +113,16 @@ def test_vCont_interspersed_nonstop(self): self.resume_one_test(run_order=["parent", "child", "parent", "child"], use_vCont=True, nonstop=True) + def get_all_output_via_vStdio(self, output_test): + # The output may be split into an arbitrary number of messages. + # Loop until we have everything. The first message is waiting for us + # in the packet queue. + output = self._server.get_raw_output_packet() + while not output_test(output): + self._server.send_packet(b"vStdio") + output += self._server.get_raw_output_packet() + return output + @add_test_categories(["fork"]) def test_c_both_nonstop(self): lock1 = self.getBuildArtifact("lock1") @@ -132,13 +142,11 @@ def test_c_both_nonstop(self): "read packet: $c#00", "send packet: $OK#00", {"direction": "send", "regex": "%Stop:T.*"}, - # see the comment in TestNonStop.py, test_stdio - "read packet: $vStdio#00", - "read packet: $vStdio#00", - "send packet: $OK#00", ], True) - ret = self.expect_gdbremote_sequence() - self.assertIn("PID: {}".format(int(parent_pid, 16)).encode(), - ret["O_content"]) - self.assertIn("PID: {}".format(int(child_pid, 16)).encode(), - ret["O_content"]) + self.expect_gdbremote_sequence() + + output = self.get_all_output_via_vStdio( + lambda output: output.count(b"PID: ") >= 2) + self.assertEqual(output.count(b"PID: "), 2) + self.assertIn("PID: {}".format(int(parent_pid, 16)).encode(), output) + self.assertIn("PID: {}".format(int(child_pid, 16)).encode(), output) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits