From cc1c1d647e3a6a4bff78cac13aa7a168846b2ffd Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 4 Mar 2025 16:07:01 +0100 Subject: [PATCH] gh-130727: Retry test_wmi on TimeoutError (GH-130832) Use sleeping_retry() in test_wmi to retry multiple times on TimeoutError. Wait up to LONG_TIMEOUT seconds (5 minutes by default). (cherry picked from commit f67ff9e82071b21c1960401aed4844b00b5bfb53) Co-authored-by: Victor Stinner --- Lib/test/test_wmi.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Lib/test/test_wmi.py b/Lib/test/test_wmi.py index f667926d1f8ddf..111f990656ced5 100644 --- a/Lib/test/test_wmi.py +++ b/Lib/test/test_wmi.py @@ -3,7 +3,8 @@ import time import unittest -from test.support import import_helper, requires_resource, LOOPBACK_TIMEOUT +from test import support +from test.support import import_helper # Do this first so test will be skipped if module doesn't exist @@ -12,15 +13,16 @@ def wmi_exec_query(query): # gh-112278: WMI maybe slow response when first call. - try: - return _wmi.exec_query(query) - except BrokenPipeError: - pass - except WindowsError as e: - if e.winerror != 258: - raise - time.sleep(LOOPBACK_TIMEOUT) - return _wmi.exec_query(query) + for _ in support.sleeping_retry(support.LONG_TIMEOUT): + try: + return _wmi.exec_query(query) + except BrokenPipeError: + pass + # retry on pipe error + except WindowsError as exc: + if exc.winerror != 258: + raise + # retry on timeout class WmiTests(unittest.TestCase): @@ -58,7 +60,7 @@ def test_wmi_query_not_select(self): with self.assertRaises(ValueError): wmi_exec_query("not select, just in case someone tries something") - @requires_resource('cpu') + @support.requires_resource('cpu') def test_wmi_query_overflow(self): # Ensure very big queries fail # Test multiple times to ensure consistency pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy