| 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)) |