summaryrefslogtreecommitdiffstats
path: root/test/asf/debug_internal.py
diff options
context:
space:
mode:
authorPratikshya Prasai <pratikshyaprasai2112@gmail.com>2022-08-18 11:09:38 -0400
committerDave Wallace <dwallacelf@gmail.com>2022-11-09 21:22:33 -0500
commit657bdf781ae876c945ca034e52cf25cccb09f71e (patch)
tree9ae70d0cb644ea9f609509ba4e83c84f687a264e /test/asf/debug_internal.py
parent4dbd641136db81ba969a5a1c0374ec9c24525526 (diff)
tests: initial asf framework refactoring for 'make test'
Type: refactor Change-Id: I41455b759a5d302ad5c4247c13634c471e7d49a8 Signed-off-by: Pratikshya Prasai <pratikshyaprasai2112@gmail.com> Signed-off-by: Saima Yunus <yunus.saima.234@gmail.com> Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Diffstat (limited to 'test/asf/debug_internal.py')
-rw-r--r--test/asf/debug_internal.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/asf/debug_internal.py b/test/asf/debug_internal.py
new file mode 100644
index 00000000000..fe10db7ee7f
--- /dev/null
+++ b/test/asf/debug_internal.py
@@ -0,0 +1,40 @@
+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))