299 lines
13 KiB
Diff
299 lines
13 KiB
Diff
diff --git a/psutil/tests/__init__.py b/psutil/tests/__init__.py
|
|
index 21bb3e61..6c45c9e0 100644
|
|
--- a/psutil/tests/__init__.py
|
|
+++ b/psutil/tests/__init__.py
|
|
@@ -88,6 +88,7 @@ __all__ = [
|
|
"HAS_IONICE", "HAS_MEMORY_MAPS", "HAS_PROC_CPU_NUM", "HAS_RLIMIT",
|
|
"HAS_SENSORS_BATTERY", "HAS_BATTERY", "HAS_SENSORS_FANS",
|
|
"HAS_SENSORS_TEMPERATURES", "HAS_MEMORY_FULL_INFO",
|
|
+ "GENTOO_TESTING",
|
|
# subprocesses
|
|
'pyrun', 'terminate', 'reap_children', 'spawn_testproc', 'spawn_zombie',
|
|
'spawn_children_pair',
|
|
@@ -128,6 +129,7 @@ PYPY = '__pypy__' in sys.builtin_module_names
|
|
APPVEYOR = 'APPVEYOR' in os.environ
|
|
GITHUB_ACTIONS = 'GITHUB_ACTIONS' in os.environ or 'CIBUILDWHEEL' in os.environ
|
|
CI_TESTING = APPVEYOR or GITHUB_ACTIONS
|
|
+GENTOO_TESTING = "GENTOO_TESTING" in os.environ
|
|
# are we a 64 bit process?
|
|
IS_64BIT = sys.maxsize > 2 ** 32
|
|
|
|
diff --git a/psutil/tests/test_linux.py b/psutil/tests/test_linux.py
|
|
index 20e28d29..c21d0aec 100755
|
|
--- a/psutil/tests/test_linux.py
|
|
+++ b/psutil/tests/test_linux.py
|
|
@@ -14,6 +14,7 @@ import errno
|
|
import glob
|
|
import io
|
|
import os
|
|
+import platform
|
|
import re
|
|
import shutil
|
|
import socket
|
|
@@ -28,6 +29,7 @@ from psutil._compat import PY3
|
|
from psutil._compat import FileNotFoundError
|
|
from psutil._compat import basestring
|
|
from psutil._compat import u
|
|
+from psutil.tests import GENTOO_TESTING
|
|
from psutil.tests import GITHUB_ACTIONS
|
|
from psutil.tests import GLOBAL_TIMEOUT
|
|
from psutil.tests import HAS_BATTERY
|
|
@@ -688,6 +690,7 @@ class TestSystemCPUCountLogical(PsutilTestCase):
|
|
num = len([x for x in out.split('\n') if not x.startswith('#')])
|
|
self.assertEqual(psutil.cpu_count(logical=True), num)
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING and platform.machine().startswith("sparc"), "broken on Gentoo/SPARC")
|
|
def test_emulate_fallbacks(self):
|
|
import psutil._pslinux
|
|
original = psutil._pslinux.cpu_count_logical()
|
|
@@ -735,6 +738,7 @@ class TestSystemCPUCountCores(PsutilTestCase):
|
|
core_ids.add(fields[1])
|
|
self.assertEqual(psutil.cpu_count(logical=False), len(core_ids))
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING and platform.machine().startswith("sparc"), "broken on Gentoo/SPARC")
|
|
def test_method_2(self):
|
|
meth_1 = psutil._pslinux.cpu_count_cores()
|
|
with mock.patch('glob.glob', return_value=[]) as m:
|
|
@@ -755,6 +759,7 @@ class TestSystemCPUCountCores(PsutilTestCase):
|
|
class TestSystemCPUFrequency(PsutilTestCase):
|
|
|
|
@unittest.skipIf(not HAS_CPU_FREQ, "not supported")
|
|
+ @unittest.skipIf(GENTOO_TESTING and platform.machine().startswith("sparc"), "broken on Gentoo/SPARC")
|
|
def test_emulate_use_second_file(self):
|
|
# https://github.com/giampaolo/psutil/issues/981
|
|
def path_exists_mock(path):
|
|
@@ -769,6 +774,7 @@ class TestSystemCPUFrequency(PsutilTestCase):
|
|
assert psutil.cpu_freq()
|
|
|
|
@unittest.skipIf(not HAS_CPU_FREQ, "not supported")
|
|
+ @unittest.skipIf(GENTOO_TESTING and platform.machine().startswith("sparc"), "broken on Gentoo/SPARC")
|
|
def test_emulate_use_cpuinfo(self):
|
|
# Emulate a case where /sys/devices/system/cpu/cpufreq* does not
|
|
# exist and /proc/cpuinfo is used instead.
|
|
@@ -896,11 +902,13 @@ class TestSystemCPUFrequency(PsutilTestCase):
|
|
@unittest.skipIf(not LINUX, "LINUX only")
|
|
class TestSystemCPUStats(PsutilTestCase):
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_ctx_switches(self):
|
|
vmstat_value = vmstat("context switches")
|
|
psutil_value = psutil.cpu_stats().ctx_switches
|
|
self.assertAlmostEqual(vmstat_value, psutil_value, delta=500)
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_interrupts(self):
|
|
vmstat_value = vmstat("interrupts")
|
|
psutil_value = psutil.cpu_stats().interrupts
|
|
@@ -929,6 +937,7 @@ class TestLoadAvg(PsutilTestCase):
|
|
@unittest.skipIf(not LINUX, "LINUX only")
|
|
class TestSystemNetIfAddrs(PsutilTestCase):
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_ips(self):
|
|
for name, addrs in psutil.net_if_addrs().items():
|
|
for addr in addrs:
|
|
@@ -1316,6 +1325,7 @@ class TestRootFsDeviceFinder(PsutilTestCase):
|
|
findmnt_value = sh("findmnt -o SOURCE -rn /")
|
|
self.assertEqual(psutil_value, findmnt_value)
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_disk_partitions_mocked(self):
|
|
with mock.patch(
|
|
'psutil._pslinux.cext.disk_partitions',
|
|
@@ -1491,6 +1501,7 @@ class TestMisc(PsutilTestCase):
|
|
psutil.PROCFS_PATH = "/proc"
|
|
|
|
@retry_on_failure()
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_issue_687(self):
|
|
# In case of thread ID:
|
|
# - pid_exists() is supposed to return False
|
|
@@ -1596,6 +1607,8 @@ class TestSensorsBattery(PsutilTestCase):
|
|
self.assertEqual(psutil.sensors_battery().power_plugged, False)
|
|
assert m.called
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING,
|
|
+ "mocking doesn't work with non-BAT0 battery")
|
|
def test_emulate_power_undetermined(self):
|
|
# Pretend we can't know whether the AC power cable not
|
|
# connected (assert fallback to False).
|
|
@@ -1614,6 +1627,8 @@ class TestSensorsBattery(PsutilTestCase):
|
|
self.assertIsNone(psutil.sensors_battery().power_plugged)
|
|
assert m.called
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING,
|
|
+ "mocking doesn't work with non-BAT0 battery")
|
|
def test_emulate_energy_full_0(self):
|
|
# Emulate a case where energy_full files returns 0.
|
|
with mock_open_content(
|
|
@@ -1621,6 +1636,8 @@ class TestSensorsBattery(PsutilTestCase):
|
|
self.assertEqual(psutil.sensors_battery().percent, 0)
|
|
assert m.called
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING,
|
|
+ "mocking doesn't work with non-BAT0 battery")
|
|
def test_emulate_energy_full_not_avail(self):
|
|
# Emulate a case where energy_full file does not exist.
|
|
# Expected fallback on /capacity.
|
|
@@ -1634,6 +1651,8 @@ class TestSensorsBattery(PsutilTestCase):
|
|
"/sys/class/power_supply/BAT0/capacity", b"88"):
|
|
self.assertEqual(psutil.sensors_battery().percent, 88)
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING,
|
|
+ "mocking doesn't work with non-BAT0 battery")
|
|
def test_emulate_no_power(self):
|
|
# Emulate a case where /AC0/online file nor /BAT0/status exist.
|
|
with mock_open_exception(
|
|
@@ -2220,6 +2239,7 @@ class TestProcessAgainstStatus(PsutilTestCase):
|
|
value = self.read_status_file("nonvoluntary_ctxt_switches:")
|
|
self.assertEqual(self.proc.num_ctx_switches().involuntary, value)
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_cpu_affinity(self):
|
|
value = self.read_status_file("Cpus_allowed_list:")
|
|
if '-' in str(value):
|
|
diff --git a/psutil/tests/test_misc.py b/psutil/tests/test_misc.py
|
|
index d946eb62..a53de565 100755
|
|
--- a/psutil/tests/test_misc.py
|
|
+++ b/psutil/tests/test_misc.py
|
|
@@ -32,6 +32,7 @@ from psutil._compat import PY3
|
|
from psutil._compat import redirect_stderr
|
|
from psutil.tests import APPVEYOR
|
|
from psutil.tests import CI_TESTING
|
|
+from psutil.tests import GENTOO_TESTING
|
|
from psutil.tests import HAS_BATTERY
|
|
from psutil.tests import HAS_MEMORY_MAPS
|
|
from psutil.tests import HAS_NET_IO_COUNTERS
|
|
@@ -401,6 +402,7 @@ class TestMisc(PsutilTestCase):
|
|
reload_module(psutil)
|
|
self.assertIn("version conflict", str(cm.exception).lower())
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_debug(self):
|
|
if PY3:
|
|
from io import StringIO
|
|
diff --git a/psutil/tests/test_posix.py b/psutil/tests/test_posix.py
|
|
index 31b81926..53b17953 100755
|
|
--- a/psutil/tests/test_posix.py
|
|
+++ b/psutil/tests/test_posix.py
|
|
@@ -23,6 +23,7 @@ from psutil import OPENBSD
|
|
from psutil import POSIX
|
|
from psutil import SUNOS
|
|
from psutil.tests import CI_TESTING
|
|
+from psutil.tests import GENTOO_TESTING
|
|
from psutil.tests import HAS_NET_IO_COUNTERS
|
|
from psutil.tests import PYTHON_EXE
|
|
from psutil.tests import PsutilTestCase
|
|
@@ -193,6 +194,7 @@ class TestProcess(PsutilTestCase):
|
|
vsz_psutil = psutil.Process(self.pid).memory_info()[1] / 1024
|
|
self.assertEqual(vsz_ps, vsz_psutil)
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_name(self):
|
|
name_ps = ps_name(self.pid)
|
|
# remove path if there is any, from the command
|
|
@@ -271,6 +273,7 @@ class TestProcess(PsutilTestCase):
|
|
adjusted_ps_pathname = ps_pathname[:len(ps_pathname)]
|
|
self.assertEqual(ps_pathname, adjusted_ps_pathname)
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_cmdline(self):
|
|
ps_cmdline = ps_args(self.pid)
|
|
psutil_cmdline = " ".join(psutil.Process(self.pid).cmdline())
|
|
@@ -326,6 +329,7 @@ class TestSystemAPIs(PsutilTestCase):
|
|
"couldn't find %s nic in 'ifconfig -a' output\n%s" % (
|
|
nic, output))
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
@unittest.skipIf(CI_TESTING and not psutil.users(), "unreliable on CI")
|
|
@retry_on_failure()
|
|
def test_users(self):
|
|
diff --git a/psutil/tests/test_process.py b/psutil/tests/test_process.py
|
|
index c9059e33..0050c42a 100755
|
|
--- a/psutil/tests/test_process.py
|
|
+++ b/psutil/tests/test_process.py
|
|
@@ -38,6 +38,7 @@ from psutil._compat import long
|
|
from psutil._compat import super
|
|
from psutil.tests import APPVEYOR
|
|
from psutil.tests import CI_TESTING
|
|
+from psutil.tests import GENTOO_TESTING
|
|
from psutil.tests import GITHUB_ACTIONS
|
|
from psutil.tests import GLOBAL_TIMEOUT
|
|
from psutil.tests import HAS_CPU_AFFINITY
|
|
@@ -292,6 +293,7 @@ class TestProcess(PsutilTestCase):
|
|
time.strftime("%Y %m %d %H:%M:%S", time.localtime(p.create_time()))
|
|
|
|
@unittest.skipIf(not POSIX, 'POSIX only')
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_terminal(self):
|
|
terminal = psutil.Process().terminal()
|
|
if terminal is not None:
|
|
@@ -341,6 +343,7 @@ class TestProcess(PsutilTestCase):
|
|
self.assertGreaterEqual(io2[i], 0)
|
|
self.assertGreaterEqual(io2[i], 0)
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "fails if builder is ioniced already")
|
|
@unittest.skipIf(not HAS_IONICE, "not supported")
|
|
@unittest.skipIf(not LINUX, "linux only")
|
|
def test_ionice_linux(self):
|
|
@@ -1406,6 +1409,7 @@ class TestProcess(PsutilTestCase):
|
|
if not OSX and GITHUB_ACTIONS:
|
|
self.assertEqual(d1, d2)
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken by Gentoo sandbox")
|
|
@unittest.skipIf(not HAS_ENVIRON, "not supported")
|
|
@unittest.skipIf(not POSIX, "POSIX only")
|
|
def test_weird_environ(self):
|
|
diff --git a/psutil/tests/test_system.py b/psutil/tests/test_system.py
|
|
index db2cb348..d719c59e 100755
|
|
--- a/psutil/tests/test_system.py
|
|
+++ b/psutil/tests/test_system.py
|
|
@@ -10,6 +10,7 @@ import contextlib
|
|
import datetime
|
|
import errno
|
|
import os
|
|
+import platform
|
|
import pprint
|
|
import shutil
|
|
import signal
|
|
@@ -33,6 +34,7 @@ from psutil._compat import long
|
|
from psutil.tests import ASCII_FS
|
|
from psutil.tests import CI_TESTING
|
|
from psutil.tests import DEVNULL
|
|
+from psutil.tests import GENTOO_TESTING
|
|
from psutil.tests import GITHUB_ACTIONS
|
|
from psutil.tests import GLOBAL_TIMEOUT
|
|
from psutil.tests import HAS_BATTERY
|
|
@@ -199,6 +201,7 @@ class TestMiscAPIs(PsutilTestCase):
|
|
self.assertGreater(bt, 0)
|
|
self.assertLess(bt, time.time())
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
@unittest.skipIf(CI_TESTING and not psutil.users(), "unreliable on CI")
|
|
def test_users(self):
|
|
users = psutil.users()
|
|
@@ -426,6 +429,7 @@ class TestCpuAPIs(PsutilTestCase):
|
|
if difference >= 0.05:
|
|
return
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "flaky")
|
|
def test_cpu_times_comparison(self):
|
|
# Make sure the sum of all per cpu times is almost equal to
|
|
# base "one cpu" times.
|
|
@@ -512,6 +516,7 @@ class TestCpuAPIs(PsutilTestCase):
|
|
self.assertGreater(value, 0)
|
|
|
|
@unittest.skipIf(not HAS_CPU_FREQ, "not suported")
|
|
+ @unittest.skipIf(GENTOO_TESTING and platform.machine().startswith("sparc"), "broken on Gentoo/SPARC")
|
|
def test_cpu_freq(self):
|
|
def check_ls(ls):
|
|
for nt in ls:
|
|
@@ -580,6 +585,7 @@ class TestDiskAPIs(PsutilTestCase):
|
|
def test_disk_usage_bytes(self):
|
|
psutil.disk_usage(b'.')
|
|
|
|
+ @unittest.skipIf(GENTOO_TESTING, "broken in Gentoo test env")
|
|
def test_disk_partitions(self):
|
|
def check_ntuple(nt):
|
|
self.assertIsInstance(nt.device, str)
|