MCPcopy Create free account
hub / github.com/fabioz/PyDev.Debugger / before_after_each_function

Function before_after_each_function

conftest.py:201–283  ·  view source on GitHub ↗
(request)

Source from the content-addressed store, hash-verified

199
200@pytest.fixture(autouse=PRINT_MEMORY_BEFORE_AFTER_TEST)
201def before_after_each_function(request):
202 global _global_collect_info
203
204 try:
205 import psutil # Don't fail if not there
206 except ImportError:
207 yield
208 return
209
210 current_pids = set(proc.pid for proc in psutil.process_iter())
211 before_curr_proc_memory_info = psutil.Process().memory_info()
212
213 if _global_collect_info and DEBUG_MEMORY_INFO:
214 try:
215 from pympler import summary, muppy
216
217 sum1 = summary.summarize(muppy.get_objects())
218 except:
219 pydev_log.exception()
220
221 sys.stdout.write(
222 """
223===============================================================================
224Memory before: %s
225%s
226===============================================================================
227"""
228 % (request.function, format_memory_info(psutil.virtual_memory(), before_curr_proc_memory_info))
229 )
230 yield
231
232 processes_info = []
233 for proc in psutil.process_iter():
234 if proc.pid not in current_pids:
235 try:
236 try:
237 cmdline = proc.cmdline()
238 except:
239 cmdline = "<unable to get>"
240 processes_info.append(
241 "New Process: %s(%s - %s) - %s" % (proc.name(), proc.pid, cmdline, format_process_memory_info(proc.memory_info()))
242 )
243 except (psutil.NoSuchProcess, psutil.AccessDenied):
244 pass # The process could've died in the meanwhile
245
246 after_curr_proc_memory_info = psutil.Process().memory_info()
247
248 if DEBUG_MEMORY_INFO:
249 try:
250 if after_curr_proc_memory_info.rss - before_curr_proc_memory_info.rss > 10 * 1000 * 1000:
251 # 10 MB leak
252 if _global_collect_info:
253 sum2 = summary.summarize(muppy.get_objects())
254 diff = summary.get_diff(sum1, sum2)
255 sys.stdout.write("===============================================================================\n")
256 sys.stdout.write("Leak info:\n")
257 sys.stdout.write("===============================================================================\n")
258 summary.print_(diff)

Callers

nothing calls this directly

Calls 7

format_memory_infoFunction · 0.85
exceptionMethod · 0.80
nameMethod · 0.80
writeMethod · 0.45
appendMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected