summaryrefslogtreecommitdiff
path: root/psutil/tests/test_linux.py
diff options
context:
space:
mode:
Diffstat (limited to 'psutil/tests/test_linux.py')
-rwxr-xr-xpsutil/tests/test_linux.py100
1 files changed, 64 insertions, 36 deletions
diff --git a/psutil/tests/test_linux.py b/psutil/tests/test_linux.py
index b8be6ca3..964416b3 100755
--- a/psutil/tests/test_linux.py
+++ b/psutil/tests/test_linux.py
@@ -250,12 +250,64 @@ def mock_open_exception(for_path, exc):
@unittest.skipIf(not LINUX, "LINUX only")
-class TestSystemVirtualMemory(PsutilTestCase):
+class TestSystemVirtualMemoryAgainstFree(PsutilTestCase):
+
+ def test_total(self):
+ cli_value = free_physmem().total
+ psutil_value = psutil.virtual_memory().total
+ self.assertEqual(cli_value, psutil_value)
+
+ @retry_on_failure()
+ def test_used(self):
+ # Older versions of procps used slab memory to calculate used memory.
+ # This got changed in:
+ # https://gitlab.com/procps-ng/procps/commit/
+ # 05d751c4f076a2f0118b914c5e51cfbb4762ad8e
+ if get_free_version_info() < (3, 3, 12):
+ raise self.skipTest("old free version")
+ cli_value = free_physmem().used
+ psutil_value = psutil.virtual_memory().used
+ self.assertAlmostEqual(cli_value, psutil_value,
+ delta=TOLERANCE_SYS_MEM)
+
+ @retry_on_failure()
+ def test_free(self):
+ cli_value = free_physmem().free
+ psutil_value = psutil.virtual_memory().free
+ self.assertAlmostEqual(cli_value, psutil_value,
+ delta=TOLERANCE_SYS_MEM)
+
+ @retry_on_failure()
+ def test_shared(self):
+ free = free_physmem()
+ free_value = free.shared
+ if free_value == 0:
+ raise unittest.SkipTest("free does not support 'shared' column")
+ psutil_value = psutil.virtual_memory().shared
+ self.assertAlmostEqual(
+ free_value, psutil_value, delta=TOLERANCE_SYS_MEM,
+ msg='%s %s \n%s' % (free_value, psutil_value, free.output))
+
+ @retry_on_failure()
+ def test_available(self):
+ # "free" output format has changed at some point:
+ # https://github.com/giampaolo/psutil/issues/538#issuecomment-147192098
+ out = sh(["free", "-b"])
+ lines = out.split('\n')
+ if 'available' not in lines[0]:
+ raise unittest.SkipTest("free does not support 'available' column")
+ else:
+ free_value = int(lines[1].split()[-1])
+ psutil_value = psutil.virtual_memory().available
+ self.assertAlmostEqual(
+ free_value, psutil_value, delta=TOLERANCE_SYS_MEM,
+ msg='%s %s \n%s' % (free_value, psutil_value, out))
+
+
+@unittest.skipIf(not LINUX, "LINUX only")
+class TestSystemVirtualMemoryAgainstVmstat(PsutilTestCase):
def test_total(self):
- # free_value = free_physmem().total
- # psutil_value = psutil.virtual_memory().total
- # self.assertEqual(free_value, psutil_value)
vmstat_value = vmstat('total memory') * 1024
psutil_value = psutil.virtual_memory().total
self.assertAlmostEqual(
@@ -269,12 +321,10 @@ class TestSystemVirtualMemory(PsutilTestCase):
# 05d751c4f076a2f0118b914c5e51cfbb4762ad8e
if get_free_version_info() < (3, 3, 12):
raise self.skipTest("old free version")
- free = free_physmem()
- free_value = free.used
+ vmstat_value = vmstat('used memory') * 1024
psutil_value = psutil.virtual_memory().used
self.assertAlmostEqual(
- free_value, psutil_value, delta=TOLERANCE_SYS_MEM,
- msg='%s %s \n%s' % (free_value, psutil_value, free.output))
+ vmstat_value, psutil_value, delta=TOLERANCE_SYS_MEM)
@retry_on_failure()
def test_free(self):
@@ -304,31 +354,9 @@ class TestSystemVirtualMemory(PsutilTestCase):
self.assertAlmostEqual(
vmstat_value, psutil_value, delta=TOLERANCE_SYS_MEM)
- @retry_on_failure()
- def test_shared(self):
- free = free_physmem()
- free_value = free.shared
- if free_value == 0:
- raise unittest.SkipTest("free does not support 'shared' column")
- psutil_value = psutil.virtual_memory().shared
- self.assertAlmostEqual(
- free_value, psutil_value, delta=TOLERANCE_SYS_MEM,
- msg='%s %s \n%s' % (free_value, psutil_value, free.output))
- @retry_on_failure()
- def test_available(self):
- # "free" output format has changed at some point:
- # https://github.com/giampaolo/psutil/issues/538#issuecomment-147192098
- out = sh(["free", "-b"])
- lines = out.split('\n')
- if 'available' not in lines[0]:
- raise unittest.SkipTest("free does not support 'available' column")
- else:
- free_value = int(lines[1].split()[-1])
- psutil_value = psutil.virtual_memory().available
- self.assertAlmostEqual(
- free_value, psutil_value, delta=TOLERANCE_SYS_MEM,
- msg='%s %s \n%s' % (free_value, psutil_value, out))
+@unittest.skipIf(not LINUX, "LINUX only")
+class TestSystemVirtualMemoryMocks(PsutilTestCase):
def test_warnings_on_misses(self):
# Emulate a case where /proc/meminfo provides few info.
@@ -808,7 +836,7 @@ class TestSystemCPUFrequency(PsutilTestCase):
name.startswith("/sys/devices/system/cpu/cpufreq/policy")):
return io.BytesIO(b"700000")
elif name == '/proc/cpuinfo':
- return io.BytesIO(b"cpu MHz : 500")
+ return io.BytesIO(b"cpu MHz : 500")
else:
return orig_open(name, *args, **kwargs)
@@ -849,8 +877,8 @@ class TestSystemCPUFrequency(PsutilTestCase):
n.startswith("/sys/devices/system/cpu/cpufreq/policy1")):
return io.BytesIO(b"600000")
elif name == '/proc/cpuinfo':
- return io.BytesIO(b"cpu MHz : 100\n"
- b"cpu MHz : 400")
+ return io.BytesIO(b"cpu MHz : 100\n"
+ b"cpu MHz : 400")
else:
return orig_open(name, *args, **kwargs)
@@ -881,7 +909,7 @@ class TestSystemCPUFrequency(PsutilTestCase):
elif name.endswith('/cpuinfo_cur_freq'):
return io.BytesIO(b"200000")
elif name == '/proc/cpuinfo':
- return io.BytesIO(b"cpu MHz : 200")
+ return io.BytesIO(b"cpu MHz : 200")
else:
return orig_open(name, *args, **kwargs)