make test: add test framework debugging
New option TEST_DEBUG=1 turns on test framework debugging, which currently consists of printing difference in allocated objects/memory and also creates reference graphs for any unfreed VppPapiProvider/VPP objects - these take a lot of memory and thus should be freed regularly. Change-Id: I29db0c1341009d4b5c5df9222d14f3095883fd0f Signed-off-by: Klement Sekera <ksekera@cisco.com>
This commit is contained in:

committed by
Damjan Marion

parent
545be52c79
commit
ebbaf55e09
39
test/debug_internal.py
Normal file
39
test/debug_internal.py
Normal file
@ -0,0 +1,39 @@
|
||||
import gc
|
||||
import pprint
|
||||
import vpp_papi
|
||||
from vpp_papi_provider import VppPapiProvider
|
||||
import objgraph
|
||||
from pympler import tracker
|
||||
tr = tracker.SummaryTracker()
|
||||
|
||||
"""
|
||||
Internal debug module
|
||||
|
||||
The module provides functions for debugging test framework
|
||||
"""
|
||||
|
||||
|
||||
def on_tear_down_class(cls):
|
||||
gc.collect()
|
||||
tr.print_diff()
|
||||
objects = gc.get_objects()
|
||||
counter = 0
|
||||
with open(cls.tempdir + '/python_objects.txt', 'w') as f:
|
||||
interesting = [
|
||||
o for o in objects
|
||||
if isinstance(o, (VppPapiProvider, vpp_papi.VPP))]
|
||||
del objects
|
||||
gc.collect()
|
||||
for o in interesting:
|
||||
objgraph.show_backrefs([o], max_depth=5,
|
||||
filename="%s/%s.png" %
|
||||
(cls.tempdir, counter))
|
||||
counter += 1
|
||||
refs = gc.get_referrers(o)
|
||||
pp = pprint.PrettyPrinter(indent=2)
|
||||
f.write("%s\n" % pp.pformat(o))
|
||||
for r in refs:
|
||||
try:
|
||||
f.write("%s\n" % pp.pformat(r))
|
||||
except:
|
||||
f.write("%s\n" % type(r))
|
Reference in New Issue
Block a user