Index: third_party/psutil/test/_bsd.py |
diff --git a/third_party/psutil/test/_bsd.py b/third_party/psutil/test/_bsd.py |
index f2df15d4fd20e9ff356a19b47c0d0b1c82463db9..0296b05239a5cb78d5a14dd49b04c16a2e1f8679 100644 |
--- a/third_party/psutil/test/_bsd.py |
+++ b/third_party/psutil/test/_bsd.py |
@@ -1,7 +1,12 @@ |
#!/usr/bin/env python |
# |
-# $Id: _bsd.py 664 2010-10-09 16:14:34Z g.rodola $ |
+# $Id: _bsd.py 1142 2011-10-05 18:45:49Z g.rodola $ |
# |
+# Copyright (c) 2009, Jay Loden, Giampaolo Rodola'. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+"""BSD specific tests. These are implicitly run by test_psutil.py.""" |
import unittest |
import subprocess |
@@ -11,18 +16,14 @@ import sys |
import psutil |
-from test_psutil import reap_children, get_test_subprocess |
-from _posix import ps |
- |
+from test_psutil import reap_children, get_test_subprocess, sh |
def sysctl(cmdline): |
"""Expects a sysctl command with an argument and parse the result |
returning only the value of interest. |
""" |
- p = subprocess.Popen(cmdline, shell=1, stdout=subprocess.PIPE) |
- result = p.communicate()[0].strip().split()[1] |
- if sys.version_info >= (3,): |
- result = str(result, sys.stdout.encoding) |
+ result = sh("sysctl " + cmdline) |
+ result = result[result.find(": ") + 2:] |
try: |
return int(result) |
except ValueError: |
@@ -54,6 +55,13 @@ class BSDSpecificTestCase(unittest.TestCase): |
sysctl_hwphymem = sysctl('sysctl hw.physmem') |
self.assertEqual(sysctl_hwphymem, psutil.TOTAL_PHYMEM) |
+ def test_BOOT_TIME(self): |
+ s = sysctl('sysctl kern.boottime') |
+ s = s[s.find(" sec = ") + 7:] |
+ s = s[:s.find(',')] |
+ btime = int(s) |
+ self.assertEqual(btime, psutil.BOOT_TIME) |
+ |
def test_avail_phymem(self): |
# This test is not particularly accurate and may fail if the OS is |
# consuming memory for other applications. |
@@ -65,7 +73,7 @@ class BSDSpecificTestCase(unittest.TestCase): |
)) |
_pagesize = sysctl("sysctl hw.pagesize") |
sysctl_avail_phymem = _sum * _pagesize |
- psutil_avail_phymem = psutil.avail_phymem() |
+ psutil_avail_phymem = psutil.phymem_usage().free |
difference = abs(psutil_avail_phymem - sysctl_avail_phymem) |
# On my system both sysctl and psutil report the same values. |
# Let's use a tollerance of 0.5 MB and consider the test as failed |
@@ -84,7 +92,7 @@ class BSDSpecificTestCase(unittest.TestCase): |
if sys.version_info >= (3,): |
result = str(result, sys.stdout.encoding) |
sysctl_total_virtmem, _ = parse_sysctl_vmtotal(result) |
- psutil_total_virtmem = psutil.total_virtmem() |
+ psutil_total_virtmem = psutil.virtmem_usage().total |
difference = abs(sysctl_total_virtmem - psutil_total_virtmem) |
# On my system I get a difference of 4657152 bytes, probably because |
@@ -93,8 +101,7 @@ class BSDSpecificTestCase(unittest.TestCase): |
# the test as failed if we go over it. |
if difference > (10 * 2**20): |
self.fail("sysctl=%s; psutil=%s; difference=%s;" %( |
- sysctl_total_virtmem, psutil_total_virtmem, difference) |
- ) |
+ sysctl_total_virtmem, psutil_total_virtmem, difference)) |
def test_avail_virtmem(self): |
# This test is not particularly accurate and may fail if the OS is |
@@ -106,12 +113,11 @@ class BSDSpecificTestCase(unittest.TestCase): |
if sys.version_info >= (3,): |
result = str(result, sys.stdout.encoding) |
_, sysctl_avail_virtmem = parse_sysctl_vmtotal(result) |
- psutil_avail_virtmem = psutil.avail_virtmem() |
+ psutil_avail_virtmem = psutil.virtmem_usage().free |
difference = abs(sysctl_avail_virtmem - psutil_avail_virtmem) |
# let's assume the test is failed if difference is > 0.5 MB |
if difference > (0.5 * 2**20): |
- self.fail("sysctl=%s; psutil=%s; difference=%s;" %( |
- sysctl_avail_virtmem, psutil_avail_virtmem, difference)) |
+ self.fail(difference) |
def test_process_create_time(self): |
cmdline = "ps -o lstart -p %s" %self.pid |
@@ -125,12 +131,35 @@ class BSDSpecificTestCase(unittest.TestCase): |
time.localtime(start_psutil)) |
self.assertEqual(start_ps, start_psutil) |
+ def test_disks(self): |
+ # test psutil.disk_usage() and psutil.disk_partitions() |
+ # against "df -a" |
+ def df(path): |
+ out = sh('df -k "%s"' % path).strip() |
+ lines = out.split('\n') |
+ lines.pop(0) |
+ line = lines.pop(0) |
+ dev, total, used, free = line.split()[:4] |
+ if dev == 'none': |
+ dev = '' |
+ total = int(total) * 1024 |
+ used = int(used) * 1024 |
+ free = int(free) * 1024 |
+ return dev, total, used, free |
+ |
+ for part in psutil.disk_partitions(all=False): |
+ usage = psutil.disk_usage(part.mountpoint) |
+ dev, total, used, free = df(part.mountpoint) |
+ self.assertEqual(part.device, dev) |
+ self.assertEqual(usage.total, total) |
+ # 10 MB tollerance |
+ if abs(usage.free - free) > 10 * 1024 * 1024: |
+ self.fail("psutil=%s, df=%s" % usage.free, free) |
+ if abs(usage.used - used) > 10 * 1024 * 1024: |
+ self.fail("psutil=%s, df=%s" % usage.used, used) |
+ |
if __name__ == '__main__': |
test_suite = unittest.TestSuite() |
test_suite.addTest(unittest.makeSuite(BSDSpecificTestCase)) |
unittest.TextTestRunner(verbosity=2).run(test_suite) |
- |
- |
- |
- |