testpathtree: Add dataitems() stress test

Change-Id: I7493a8d2d9df6123a3d80f17b2ba268608997066
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
diff --git a/obmc/utils/testpathtree.py b/obmc/utils/testpathtree.py
old mode 100755
new mode 100644
index 3c68edc..c145e47
--- a/obmc/utils/testpathtree.py
+++ b/obmc/utils/testpathtree.py
@@ -336,6 +336,20 @@
 key = '/0/a'
 """
 
+def iter_stress(pt):
+    for i in pt.dataitems():
+        pass
+
+iter_setup = """\
+from __main__ import iter_stress
+from obmc.utils.pathtree import PathTree
+pt = PathTree()
+for i in ('/' + '/'.join([chr(ord('a') + x)] * {}) for x in range(0, 26)):
+    for j in range(0, {}):
+        k = "{}".format(i, j)
+        pt[k] = k
+"""
+
 if __name__ == "__main__":
     print("Depth tests:")
     for depth in range(1, 11):
@@ -350,3 +364,12 @@
         stmt = "width_stress(pt, key)"
         time = timeit.timeit(stmt, setup=setup)
         print("\t{}: {}".format(width, time))
+    print
+    print("Iteration tests:")
+    n = 1000
+    for depth in range(1, 5):
+        for width in range(1, 5):
+            setup = iter_setup.format(depth, width, "{}/{}")
+            stmt = "iter_stress(pt)"
+            time = timeit.timeit(stmt, setup=setup, number=n)
+            print("\tdepth={}, width={}, n={}: {}".format(depth, width, n, time))