diff options
Diffstat (limited to 'tests/osinfo.py')
-rw-r--r-- | tests/osinfo.py | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/tests/osinfo.py b/tests/osinfo.py index 0b86ef54..a7ebd2ef 100644 --- a/tests/osinfo.py +++ b/tests/osinfo.py @@ -1,3 +1,6 @@ +# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 +# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt + """OS information for testing.""" from coverage import env @@ -8,29 +11,29 @@ if env.WINDOWS: def process_ram(): """How much RAM is this process using? (Windows)""" import ctypes - # lifted from: - # lists.ubuntu.com/archives/bazaar-commits/2009-February/011990.html + # From: http://lists.ubuntu.com/archives/bazaar-commits/2009-February/011990.html class PROCESS_MEMORY_COUNTERS_EX(ctypes.Structure): """Used by GetProcessMemoryInfo""" - _fields_ = [('cb', ctypes.c_ulong), - ('PageFaultCount', ctypes.c_ulong), - ('PeakWorkingSetSize', ctypes.c_size_t), - ('WorkingSetSize', ctypes.c_size_t), - ('QuotaPeakPagedPoolUsage', ctypes.c_size_t), - ('QuotaPagedPoolUsage', ctypes.c_size_t), - ('QuotaPeakNonPagedPoolUsage', ctypes.c_size_t), - ('QuotaNonPagedPoolUsage', ctypes.c_size_t), - ('PagefileUsage', ctypes.c_size_t), - ('PeakPagefileUsage', ctypes.c_size_t), - ('PrivateUsage', ctypes.c_size_t), - ] + _fields_ = [ + ('cb', ctypes.c_ulong), + ('PageFaultCount', ctypes.c_ulong), + ('PeakWorkingSetSize', ctypes.c_size_t), + ('WorkingSetSize', ctypes.c_size_t), + ('QuotaPeakPagedPoolUsage', ctypes.c_size_t), + ('QuotaPagedPoolUsage', ctypes.c_size_t), + ('QuotaPeakNonPagedPoolUsage', ctypes.c_size_t), + ('QuotaNonPagedPoolUsage', ctypes.c_size_t), + ('PagefileUsage', ctypes.c_size_t), + ('PeakPagefileUsage', ctypes.c_size_t), + ('PrivateUsage', ctypes.c_size_t), + ] mem_struct = PROCESS_MEMORY_COUNTERS_EX() ret = ctypes.windll.psapi.GetProcessMemoryInfo( - ctypes.windll.kernel32.GetCurrentProcess(), - ctypes.byref(mem_struct), - ctypes.sizeof(mem_struct) - ) + ctypes.windll.kernel32.GetCurrentProcess(), + ctypes.byref(mem_struct), + ctypes.sizeof(mem_struct) + ) if not ret: return 0 return mem_struct.PrivateUsage @@ -44,26 +47,26 @@ elif env.LINUX: def _VmB(key): """Read the /proc/PID/status file to find memory use.""" try: - # get pseudo file /proc/<pid>/status + # Get pseudo file /proc/<pid>/status with open('/proc/%d/status' % os.getpid()) as t: v = t.read() except IOError: return 0 # non-Linux? - # get VmKey line e.g. 'VmRSS: 9999 kB\n ...' + # Get VmKey line e.g. 'VmRSS: 9999 kB\n ...' i = v.index(key) v = v[i:].split(None, 3) if len(v) < 3: - return 0 # invalid format? - # convert Vm value to bytes + return 0 # Invalid format? + # Convert Vm value to bytes. return int(float(v[1]) * _scale[v[2].lower()]) def process_ram(): """How much RAM is this process using? (Linux implementation)""" return _VmB('VmRSS') - else: - # Don't have an implementation, at least satisfy the interface. + # Generic implementation. def process_ram(): - """How much RAM is this process using? (placebo implementation)""" - return 0 + """How much RAM is this process using? (stdlib implementation)""" + import resource + return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss |