1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
from contextlib import suppress
import pytest
try:
import psutil
except ImportError:
psutil = None
try:
from os import process_cpu_count
except ImportError:
process_cpu_count = None
try:
from os import sched_getaffinity
except ImportError:
sched_getaffinity = None
@pytest.mark.skipif(psutil is None, reason="psutil needs to be installed")
def test_auto_detect_cpus_psutil_affinity(
pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch
) -> None:
import psutil
monkeypatch.setattr(
psutil.Process, "cpu_affinity", lambda self: list(range(10)), raising=False
)
pytester.makepyfile("""
def test_auto_detect_cpus(num_parallel_threads):
assert num_parallel_threads == 10
""")
# run pytest with the following cmd args
result = pytester.runpytest("--parallel-threads=auto", "-v")
# fnmatch_lines does an assertion internally
result.stdout.fnmatch_lines(
[
"*::test_auto_detect_cpus PARALLEL PASSED*",
]
)
@pytest.mark.skipif(psutil is None, reason="psutil needs to be installed")
def test_auto_detect_cpus_psutil_cpu_count(
pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch
) -> None:
import psutil
monkeypatch.delattr(psutil.Process, "cpu_affinity", raising=False)
monkeypatch.setattr(psutil, "cpu_count", lambda: 10)
pytester.makepyfile("""
def test_auto_detect_cpus(num_parallel_threads):
assert num_parallel_threads == 10
""")
# run pytest with the following cmd args
result = pytester.runpytest("--parallel-threads=auto", "-v")
# fnmatch_lines does an assertion internally
result.stdout.fnmatch_lines(
[
"*::test_auto_detect_cpus PARALLEL PASSED*",
]
)
@pytest.mark.skipif(
process_cpu_count is None, reason="process_cpu_count is available in >=3.13"
)
def test_auto_detect_process_cpu_count(
pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch
) -> None:
with suppress(ImportError):
import psutil
monkeypatch.delattr(psutil.Process, "cpu_affinity", raising=False)
monkeypatch.setattr(psutil, "cpu_count", lambda: None)
monkeypatch.setattr("os.process_cpu_count", lambda: 10)
pytester.makepyfile("""
def test_auto_detect_cpus(num_parallel_threads):
assert num_parallel_threads == 10
""")
# run pytest with the following cmd args
result = pytester.runpytest("--parallel-threads=auto", "-v")
# fnmatch_lines does an assertion internally
result.stdout.fnmatch_lines(
[
"*::test_auto_detect_cpus PARALLEL PASSED*",
]
)
@pytest.mark.skipif(
sched_getaffinity is None,
reason="sched_getaffinity is available certain platforms only",
)
def test_auto_detect_sched_getaffinity(
pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch
) -> None:
with suppress(ImportError):
import psutil
monkeypatch.delattr(psutil.Process, "cpu_affinity", raising=False)
monkeypatch.setattr(psutil, "cpu_count", lambda: None)
monkeypatch.setattr("os.process_cpu_count", lambda: None, raising=False)
monkeypatch.setattr("os.sched_getaffinity", lambda pid: list(range(10)))
pytester.makepyfile("""
def test_auto_detect_cpus(num_parallel_threads):
assert num_parallel_threads == 10
""")
# run pytest with the following cmd args
result = pytester.runpytest("--parallel-threads=auto", "-v")
# fnmatch_lines does an assertion internally
result.stdout.fnmatch_lines(
[
"*::test_auto_detect_cpus PARALLEL PASSED*",
]
)
def test_auto_detect_cpu_count(
pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch
) -> None:
with suppress(ImportError):
import psutil
monkeypatch.delattr(psutil.Process, "cpu_affinity", raising=False)
monkeypatch.setattr(psutil, "cpu_count", lambda: None)
monkeypatch.setattr("os.process_cpu_count", lambda: None, raising=False)
monkeypatch.setattr("os.sched_getaffinity", lambda pid: None, raising=False)
monkeypatch.setattr("os.cpu_count", lambda: 10)
pytester.makepyfile("""
def test_auto_detect_cpus(num_parallel_threads):
assert num_parallel_threads == 10
""")
# run pytest with the following cmd args
result = pytester.runpytest("--parallel-threads=auto", "-v")
# fnmatch_lines does an assertion internally
result.stdout.fnmatch_lines(
[
"*::test_auto_detect_cpus PARALLEL PASSED*",
]
)
|