Browse Source

Issue #26939: Add the support.setswitchinterval() function to fix

test_functools hanging on the Android armv7 qemu emulator.
pull/2/head
Xavier de Gaye 9 years ago
parent
commit
7522ef402c
  1. 16
      Lib/test/support/__init__.py
  2. 2
      Lib/test/test_functools.py
  3. 6
      Misc/NEWS

16
Lib/test/support/__init__.py

@ -93,6 +93,7 @@ __all__ = [
"check__all__", "requires_android_level", "requires_multiprocessing_queue",
# sys
"is_jython", "is_android", "check_impl_detail", "unix_shell",
"setswitchinterval",
# network
"HOST", "IPV6_ENABLED", "find_unused_port", "bind_port", "open_urlresource",
# processes
@ -2547,3 +2548,18 @@ def missing_compiler_executable(cmd_names=[]):
continue
if spawn.find_executable(cmd[0]) is None:
return cmd[0]
_is_android_emulator = None
def setswitchinterval(interval):
# Setting a very low gil interval on the Android emulator causes python
# to hang (issue #26939).
minimum_interval = 1e-5
if is_android and interval < minimum_interval:
global _is_android_emulator
if _is_android_emulator is None:
_is_android_emulator = (subprocess.check_output(
['getprop', 'ro.kernel.qemu']).strip() == b'1')
if _is_android_emulator:
interval = minimum_interval
return sys.setswitchinterval(interval)

2
Lib/test/test_functools.py

@ -1322,7 +1322,7 @@ class TestLRU:
f.cache_clear()
orig_si = sys.getswitchinterval()
sys.setswitchinterval(1e-6)
support.setswitchinterval(1e-6)
try:
# create n threads in order to fill cache
threads = [threading.Thread(target=full, args=[k])

6
Misc/NEWS

@ -22,6 +22,12 @@ Library
- Issue #28847: dbm.dumb now supports reading read-only files and no longer
writes the index file when it is not changed.
Tests
-----
- Issue #26939: Add the support.setswitchinterval() function to fix
test_functools hanging on the Android armv7 qemu emulator.
What's New in Python 3.6.0 release candidate 1
==============================================

Loading…
Cancel
Save