From ebbaf55e09cfe2a31d4bf2b2f6bc49eeb4e1d528 Mon Sep 17 00:00:00 2001 From: Klement Sekera Date: Sat, 17 Feb 2018 13:41:33 +0100 Subject: 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 --- test/debug_internal.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 test/debug_internal.py (limited to 'test/debug_internal.py') diff --git a/test/debug_internal.py b/test/debug_internal.py new file mode 100644 index 00000000000..2cbee27ec81 --- /dev/null +++ b/test/debug_internal.py @@ -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)) -- cgit 1.2.3-korg