| 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)
|
| -
|
| -
|
| -
|
| -
|
|
|