mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-26 01:04:29 +03:00
refactored memory leak test case
This commit is contained in:
parent
277935ae23
commit
ed68328c09
|
@ -170,6 +170,41 @@ class PillowTestCase(unittest.TestCase):
|
||||||
return Image.open(outfile)
|
return Image.open(outfile)
|
||||||
raise IOError()
|
raise IOError()
|
||||||
|
|
||||||
|
@unittest.skipIf(sys.platform.startswith('win32'), "requires Unix or MacOS")
|
||||||
|
class PillowLeakTestCase(PillowTestCase):
|
||||||
|
# requires unix/osx
|
||||||
|
iterations = 100 # count
|
||||||
|
mem_limit = 512 # k
|
||||||
|
|
||||||
|
def _get_mem_usage(self):
|
||||||
|
"""
|
||||||
|
Gets the RUSAGE memory usage, returns in K. Encapsulates the difference
|
||||||
|
between OSX and Linux rss reporting
|
||||||
|
|
||||||
|
:returns; memory usage in kilobytes
|
||||||
|
"""
|
||||||
|
|
||||||
|
from resource import getpagesize, getrusage, RUSAGE_SELF
|
||||||
|
mem = getrusage(RUSAGE_SELF).ru_maxrss
|
||||||
|
if sys.platform == 'darwin':
|
||||||
|
# man 2 getrusage:
|
||||||
|
# ru_maxrss the maximum resident set size utilized (in bytes).
|
||||||
|
return mem / 1024 # Kb
|
||||||
|
else:
|
||||||
|
# linux
|
||||||
|
# man 2 getrusage
|
||||||
|
# ru_maxrss (since Linux 2.6.32)
|
||||||
|
# This is the maximum resident set size used (in kilobytes).
|
||||||
|
return mem # Kb
|
||||||
|
|
||||||
|
def _test_leak(self, core):
|
||||||
|
start_mem = self._get_mem_usage()
|
||||||
|
for cycle in range(self.iterations):
|
||||||
|
core()
|
||||||
|
mem = (self._get_mem_usage() - start_mem)
|
||||||
|
self.assertLess(mem, self.mem_limit,
|
||||||
|
msg='memory usage limit exceeded in iteration %d' % cycle)
|
||||||
|
|
||||||
|
|
||||||
# helpers
|
# helpers
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user