summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2015-07-09 10:36:18 +0200
committerGiampaolo Rodola <g.rodola@gmail.com>2015-07-09 10:36:18 +0200
commitc875574d088ff38d49a5bf6ec10f0c05b733045c (patch)
tree821a61dd9fc6808ca8c9a4349046edb16d804f5e
parentd2a37e772906194b89c639e82ef9372fa3e222ce (diff)
downloadpsutil-c875574d088ff38d49a5bf6ec10f0c05b733045c.tar.gz
fix memleaks failure
-rw-r--r--test/test_memory_leaks.py35
1 files changed, 24 insertions, 11 deletions
diff --git a/test/test_memory_leaks.py b/test/test_memory_leaks.py
index 802e20ab..6f02dc0a 100644
--- a/test/test_memory_leaks.py
+++ b/test/test_memory_leaks.py
@@ -10,6 +10,7 @@ functions many times and compare process memory usage before and
after the calls. It might produce false positives.
"""
+import functools
import gc
import os
import socket
@@ -20,7 +21,7 @@ import time
import psutil
import psutil._common
-from psutil._compat import xrange
+from psutil._compat import xrange, callable
from test_psutil import (WINDOWS, POSIX, OSX, LINUX, SUNOS, BSD, TESTFN,
RLIMIT_SUPPORT, TRAVIS)
from test_psutil import (reap_children, supports_ipv6, safe_remove,
@@ -92,7 +93,7 @@ class Base(unittest.TestCase):
def get_mem(self):
return psutil.Process().memory_info()[0]
- def call(self, *args, **kwargs):
+ def call(self, function, *args, **kwargs):
raise NotImplementedError("must be implemented in subclass")
@@ -106,15 +107,25 @@ class TestProcessObjectLeaks(Base):
reap_children()
def call(self, function, *args, **kwargs):
- meth = getattr(self.proc, function)
- if '_exc' in kwargs:
- exc = kwargs.pop('_exc')
- self.assertRaises(exc, meth, *args, **kwargs)
+ if callable(function):
+ if '_exc' in kwargs:
+ exc = kwargs.pop('_exc')
+ self.assertRaises(exc, function, *args, **kwargs)
+ else:
+ try:
+ function(*args, **kwargs)
+ except psutil.Error:
+ pass
else:
- try:
- meth(*args, **kwargs)
- except psutil.Error:
- pass
+ meth = getattr(self.proc, function)
+ if '_exc' in kwargs:
+ exc = kwargs.pop('_exc')
+ self.assertRaises(exc, meth, *args, **kwargs)
+ else:
+ try:
+ meth(*args, **kwargs)
+ except psutil.Error:
+ pass
@skip_if_linux()
def test_name(self):
@@ -165,8 +176,10 @@ class TestProcessObjectLeaks(Base):
value = psutil.Process().ionice()
self.execute('ionice', value)
else:
+ from psutil._pslinux import cext
self.execute('ionice', psutil.IOPRIO_CLASS_NONE)
- self.execute_w_exc(OSError, 'ionice', -1)
+ fun = functools.partial(cext.proc_ioprio_set, os.getpid(), -1, 0)
+ self.execute_w_exc(OSError, fun)
@unittest.skipIf(OSX or SUNOS, "feature not supported on this platform")
@skip_if_linux()