2018-02-17 13:41:33 +01:00
|
|
|
import gc
|
|
|
|
import pprint
|
|
|
|
import vpp_papi
|
|
|
|
from vpp_papi_provider import VppPapiProvider
|
|
|
|
import objgraph
|
|
|
|
from pympler import tracker
|
2022-04-26 19:02:15 +02:00
|
|
|
|
2018-02-17 13:41:33 +01:00
|
|
|
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
|
2022-04-26 19:02:15 +02:00
|
|
|
with open(cls.tempdir + "/python_objects.txt", "w") as f:
|
2018-02-17 13:41:33 +01:00
|
|
|
interesting = [
|
2022-04-26 19:02:15 +02:00
|
|
|
o for o in objects if isinstance(o, (VppPapiProvider, vpp_papi.VPP))
|
|
|
|
]
|
2018-02-17 13:41:33 +01:00
|
|
|
del objects
|
|
|
|
gc.collect()
|
|
|
|
for o in interesting:
|
2022-04-26 19:02:15 +02:00
|
|
|
objgraph.show_backrefs(
|
|
|
|
[o], max_depth=5, filename="%s/%s.png" % (cls.tempdir, counter)
|
|
|
|
)
|
2018-02-17 13:41:33 +01:00
|
|
|
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))
|