1786e6a6cSAndrew Jefferyimport unittest 2786e6a6cSAndrew Jeffery 3786e6a6cSAndrew Jefferyfrom .pathtree import PathTree 4786e6a6cSAndrew Jeffery 5786e6a6cSAndrew Jefferyclass PathTreeTest(unittest.TestCase): 6786e6a6cSAndrew Jeffery def test_set_depth_1(self): 7786e6a6cSAndrew Jeffery pt = PathTree() 8786e6a6cSAndrew Jeffery pt['/a'] = 1 9786e6a6cSAndrew Jeffery 10786e6a6cSAndrew Jeffery def test_set_depth_2(self): 11786e6a6cSAndrew Jeffery pt = PathTree() 12786e6a6cSAndrew Jeffery pt['/a/b'] = 2 13786e6a6cSAndrew Jeffery 14786e6a6cSAndrew Jeffery def test_get_no_key(self): 15786e6a6cSAndrew Jeffery pt = PathTree() 16786e6a6cSAndrew Jeffery with self.assertRaises(KeyError): 17786e6a6cSAndrew Jeffery pt['/foo'] 18786e6a6cSAndrew Jeffery 19786e6a6cSAndrew Jeffery def test_get_depth_1(self): 20786e6a6cSAndrew Jeffery pt = PathTree() 21786e6a6cSAndrew Jeffery pt['/a'] = 1 22786e6a6cSAndrew Jeffery self.assertEqual(1, pt['/a']) 23786e6a6cSAndrew Jeffery 24786e6a6cSAndrew Jeffery def test_get_depth_2(self): 25786e6a6cSAndrew Jeffery pt = PathTree() 26786e6a6cSAndrew Jeffery pt['/a/b'] = 2 27786e6a6cSAndrew Jeffery self.assertEqual(set(['/a', '/a/b']), set(pt.keys())) 28786e6a6cSAndrew Jeffery self.assertEqual(2, pt['/a/b']) 29786e6a6cSAndrew Jeffery 30786e6a6cSAndrew Jeffery def test_get_default(self): 31786e6a6cSAndrew Jeffery self.assertEquals(1, PathTree().get('/a', 1)) 32786e6a6cSAndrew Jeffery 33786e6a6cSAndrew Jeffery def test_get_present(self): 34786e6a6cSAndrew Jeffery pt = PathTree() 35786e6a6cSAndrew Jeffery pt['/a'] = 1 36786e6a6cSAndrew Jeffery self.assertEquals(1, pt.get('/a')) 37786e6a6cSAndrew Jeffery 38786e6a6cSAndrew Jeffery def test_set_2_depth_1(self): 39786e6a6cSAndrew Jeffery pt = PathTree() 40786e6a6cSAndrew Jeffery pt['/a'] = 1.1 41786e6a6cSAndrew Jeffery pt['/b'] = 1.2 42786e6a6cSAndrew Jeffery self.assertEqual(set(['/a', '/b']), set(pt.keys())) 43786e6a6cSAndrew Jeffery self.assertEqual(1.1, pt['/a']) 44786e6a6cSAndrew Jeffery self.assertEqual(1.2, pt['/b']) 45786e6a6cSAndrew Jeffery 46786e6a6cSAndrew Jeffery def test_set_2_depth_2_common_parent(self): 47786e6a6cSAndrew Jeffery pt = PathTree() 48786e6a6cSAndrew Jeffery pt['/a/b'] = 1.1 49786e6a6cSAndrew Jeffery pt['/a/c'] = 1.2 50786e6a6cSAndrew Jeffery self.assertEqual(set(['/a', '/a/b', '/a/c']), set(pt.keys())) 51786e6a6cSAndrew Jeffery self.assertEqual(1.1, pt['/a/b']) 52786e6a6cSAndrew Jeffery self.assertEqual(1.2, pt['/a/c']) 53786e6a6cSAndrew Jeffery 54786e6a6cSAndrew Jeffery def test_set_2_depth_2_separate_parent(self): 55786e6a6cSAndrew Jeffery pt = PathTree() 56786e6a6cSAndrew Jeffery pt['/a/b'] = 1.1 57786e6a6cSAndrew Jeffery pt['/b/c'] = 1.2 58786e6a6cSAndrew Jeffery self.assertEqual(set(['/a', '/b', '/a/b', '/b/c']), set(pt.keys())) 59786e6a6cSAndrew Jeffery self.assertEqual(1.1, pt['/a/b']) 60786e6a6cSAndrew Jeffery self.assertEqual(1.2, pt['/b/c']) 61786e6a6cSAndrew Jeffery 62786e6a6cSAndrew Jeffery def test_dumpd_empty(self): 63786e6a6cSAndrew Jeffery pt = PathTree() 64786e6a6cSAndrew Jeffery self.assertEquals(dict(), pt.dumpd()) 65786e6a6cSAndrew Jeffery 66786e6a6cSAndrew Jeffery def test_dumpd_populated(self): 67786e6a6cSAndrew Jeffery pt = PathTree() 68786e6a6cSAndrew Jeffery pt['/a/b'] = { 1 : 1.1 } 69786e6a6cSAndrew Jeffery pt['/b/c'] = { 2 : 1.2 } 70786e6a6cSAndrew Jeffery dump = pt.dumpd() 71786e6a6cSAndrew Jeffery self.assertEquals(set(['/']), set(dump.keys())) 72786e6a6cSAndrew Jeffery self.assertEquals(set(['a', 'b']), set(dump['/'].keys())) 73786e6a6cSAndrew Jeffery self.assertEquals(set(['b']), set(dump['/']['a'].keys())) 74786e6a6cSAndrew Jeffery self.assertEquals(set(['c']), set(dump['/']['b'].keys())) 75786e6a6cSAndrew Jeffery 76786e6a6cSAndrew Jeffery def test_del_set_1_depth_1(self): 77786e6a6cSAndrew Jeffery pt = PathTree() 78786e6a6cSAndrew Jeffery pt['/a'] = 1 79786e6a6cSAndrew Jeffery del pt['/a'] 80786e6a6cSAndrew Jeffery self.assertEquals(0, len(pt.keys())) 81786e6a6cSAndrew Jeffery 82786e6a6cSAndrew Jeffery def test_del_set_2_depth_1(self): 83786e6a6cSAndrew Jeffery pt = PathTree() 84786e6a6cSAndrew Jeffery pt['/a'] = 1 85786e6a6cSAndrew Jeffery pt['/b'] = 2 86786e6a6cSAndrew Jeffery del pt['/a'] 87786e6a6cSAndrew Jeffery self.assertEquals(set(['/b']), set(pt.keys())) 88786e6a6cSAndrew Jeffery 89786e6a6cSAndrew Jeffery def test_del_set_2_depth_2(self): 90786e6a6cSAndrew Jeffery pt = PathTree() 91786e6a6cSAndrew Jeffery pt['/a/b'] = 1 92786e6a6cSAndrew Jeffery pt['/b/c'] = 2 93786e6a6cSAndrew Jeffery del pt['/a/b'] 94786e6a6cSAndrew Jeffery self.assertEquals(set(['/b/c', '/b']), set(pt.keys())) 95786e6a6cSAndrew Jeffery 96786e6a6cSAndrew Jeffery def test_setdefault_present(self): 97786e6a6cSAndrew Jeffery pt = PathTree() 98786e6a6cSAndrew Jeffery pt['/a'] = 1 99786e6a6cSAndrew Jeffery self.assertEquals(1, pt.setdefault('/a', 2)) 100786e6a6cSAndrew Jeffery 101786e6a6cSAndrew Jeffery def test_setdefault_absent(self): 102786e6a6cSAndrew Jeffery self.assertEquals(1, PathTree().setdefault('/a', 1)) 103786e6a6cSAndrew Jeffery 104786e6a6cSAndrew Jeffery def test_del_no_key(self): 105786e6a6cSAndrew Jeffery with self.assertRaises(KeyError): 106786e6a6cSAndrew Jeffery del PathTree()['/a'] 107786e6a6cSAndrew Jeffery 108786e6a6cSAndrew Jeffery def test_values_1(self): 109786e6a6cSAndrew Jeffery pt = PathTree() 110786e6a6cSAndrew Jeffery pt['/a'] = 1 111786e6a6cSAndrew Jeffery self.assertEquals(set([1]), set(pt.values())) 112786e6a6cSAndrew Jeffery 113786e6a6cSAndrew Jeffery def test_values_2(self): 114786e6a6cSAndrew Jeffery pt = PathTree() 115786e6a6cSAndrew Jeffery pt['/a'] = 1 116786e6a6cSAndrew Jeffery pt['/b'] = 2 117786e6a6cSAndrew Jeffery self.assertEquals(set([1, 2]), set(pt.values())) 118786e6a6cSAndrew Jeffery 119786e6a6cSAndrew Jeffery def test_items_1(self): 120786e6a6cSAndrew Jeffery pt = PathTree() 121786e6a6cSAndrew Jeffery pt['/a'] = 1 122786e6a6cSAndrew Jeffery self.assertEquals(set([('/a', 1)]), set(pt.items())) 123786e6a6cSAndrew Jeffery 124786e6a6cSAndrew Jeffery def test_items_2(self): 125786e6a6cSAndrew Jeffery pt = PathTree() 126786e6a6cSAndrew Jeffery pt['/a'] = 1 127786e6a6cSAndrew Jeffery pt['/b'] = 2 128786e6a6cSAndrew Jeffery self.assertEquals(set([('/a', 1), ('/b', 2)]), set(pt.items())) 129786e6a6cSAndrew Jeffery 130786e6a6cSAndrew Jeffery def test_items_depth_2(self): 131786e6a6cSAndrew Jeffery pt = PathTree() 132786e6a6cSAndrew Jeffery pt['/a/b'] = 1 133786e6a6cSAndrew Jeffery self.assertEquals(set([('/a', None), ('/a/b', 1)]), set(pt.items())) 134786e6a6cSAndrew Jeffery 135786e6a6cSAndrew Jeffery def test_dataitems_0(self): 136786e6a6cSAndrew Jeffery pt = PathTree() 137786e6a6cSAndrew Jeffery self.assertEquals(set(), set(pt.dataitems())) 138786e6a6cSAndrew Jeffery 139786e6a6cSAndrew Jeffery def test_dataitems_1(self): 140786e6a6cSAndrew Jeffery pt = PathTree() 141786e6a6cSAndrew Jeffery pt['/b'] = 1 142786e6a6cSAndrew Jeffery self.assertEquals(set([('/b', 1)]), set(pt.dataitems())) 143786e6a6cSAndrew Jeffery 144786e6a6cSAndrew Jeffery def test_dataitems_2(self): 145786e6a6cSAndrew Jeffery pt = PathTree() 146786e6a6cSAndrew Jeffery pt['/a'] = 1 147786e6a6cSAndrew Jeffery pt['/b/c'] = 2 148786e6a6cSAndrew Jeffery self.assertEquals(set([('/a', 1), ('/b/c', 2)]), set(pt.dataitems())) 149786e6a6cSAndrew Jeffery 150786e6a6cSAndrew Jeffery def test_get_children(self): 151786e6a6cSAndrew Jeffery pt = PathTree() 152786e6a6cSAndrew Jeffery pt['/a'] = 1 153786e6a6cSAndrew Jeffery self.assertEquals(set(['a']), set(pt.get_children('/'))) 154786e6a6cSAndrew Jeffery self.assertEquals(set(), set(pt.get_children('/a'))) 155786e6a6cSAndrew Jeffery 156786e6a6cSAndrew Jeffery def test_get_children_nested(self): 157786e6a6cSAndrew Jeffery pt = PathTree() 158786e6a6cSAndrew Jeffery pt['/a/b'] = 1 159786e6a6cSAndrew Jeffery self.assertEquals(set(['a']), set(pt.get_children('/'))) 160786e6a6cSAndrew Jeffery self.assertEquals(set(['b']), set(pt.get_children('/a'))) 161786e6a6cSAndrew Jeffery self.assertEquals(set(), set(pt.get_children('/a/b'))) 162786e6a6cSAndrew Jeffery 163786e6a6cSAndrew Jeffery def test_demote_1(self): 164786e6a6cSAndrew Jeffery pt = PathTree() 165786e6a6cSAndrew Jeffery pt['/a'] = 1 166786e6a6cSAndrew Jeffery self.assertEquals([1], pt.values()) 167786e6a6cSAndrew Jeffery pt.demote('/a') 168786e6a6cSAndrew Jeffery self.assertEquals([None], pt.values()) 169786e6a6cSAndrew Jeffery 170786e6a6cSAndrew Jeffery def test_demote_2(self): 171786e6a6cSAndrew Jeffery pt = PathTree() 172786e6a6cSAndrew Jeffery pt['/a'] = 1 173786e6a6cSAndrew Jeffery pt['/b'] = 2 174786e6a6cSAndrew Jeffery self.assertEquals(set([1, 2]), set(pt.values())) 175786e6a6cSAndrew Jeffery pt.demote('/a') 176786e6a6cSAndrew Jeffery self.assertEquals(set([None, 2]), set(pt.values())) 177786e6a6cSAndrew Jeffery 178786e6a6cSAndrew Jeffery def test_demote_nested(self): 179786e6a6cSAndrew Jeffery pt = PathTree() 180786e6a6cSAndrew Jeffery pt['/a'] = 1 181786e6a6cSAndrew Jeffery pt['/a/b'] = 2 182786e6a6cSAndrew Jeffery self.assertEquals(set([1, 2]), set(pt.values())) 183786e6a6cSAndrew Jeffery pt.demote('/a/b') 184786e6a6cSAndrew Jeffery self.assertEquals(set([1, None]), set(pt.values())) 185786e6a6cSAndrew Jeffery 186786e6a6cSAndrew Jeffery def test_iter(self): 187786e6a6cSAndrew Jeffery pt = PathTree() 188786e6a6cSAndrew Jeffery pt['/a'] = 1 189786e6a6cSAndrew Jeffery i = iter(pt) 190786e6a6cSAndrew Jeffery k, v = next(i) 191786e6a6cSAndrew Jeffery self.assertEquals('/a', k) 192786e6a6cSAndrew Jeffery self.assertEquals(1, v) 193786e6a6cSAndrew Jeffery with self.assertRaises(StopIteration): 194786e6a6cSAndrew Jeffery next(i) 195786e6a6cSAndrew Jeffery 196786e6a6cSAndrew Jeffery def test_iter_2(self): 197786e6a6cSAndrew Jeffery pt = PathTree() 198786e6a6cSAndrew Jeffery pt['/a'] = 1 199786e6a6cSAndrew Jeffery pt['/b'] = 2 200786e6a6cSAndrew Jeffery i = iter(pt) 201786e6a6cSAndrew Jeffery k, v = next(i) 202786e6a6cSAndrew Jeffery self.assertEquals('/a', k) 203786e6a6cSAndrew Jeffery self.assertEquals(1, v) 204786e6a6cSAndrew Jeffery k, v = next(i) 205786e6a6cSAndrew Jeffery self.assertEquals('/b', k) 206786e6a6cSAndrew Jeffery self.assertEquals(2, v) 207786e6a6cSAndrew Jeffery with self.assertRaises(StopIteration): 208786e6a6cSAndrew Jeffery next(i) 209786e6a6cSAndrew Jeffery 210786e6a6cSAndrew Jeffery def test_iter_2_nested(self): 211786e6a6cSAndrew Jeffery pt = PathTree() 212786e6a6cSAndrew Jeffery pt['/a'] = 1 213786e6a6cSAndrew Jeffery pt['/a/b'] = 2 214786e6a6cSAndrew Jeffery i = iter(pt) 215786e6a6cSAndrew Jeffery k, v = next(i) 216786e6a6cSAndrew Jeffery self.assertEquals('/a', k) 217786e6a6cSAndrew Jeffery self.assertEquals(1, v) 218786e6a6cSAndrew Jeffery k, v = next(i) 219786e6a6cSAndrew Jeffery self.assertEquals('/a/b', k) 220786e6a6cSAndrew Jeffery self.assertEquals(2, v) 221786e6a6cSAndrew Jeffery with self.assertRaises(StopIteration): 222786e6a6cSAndrew Jeffery next(i) 223786e6a6cSAndrew Jeffery 224786e6a6cSAndrew Jeffery def test_keys_2_nested_depth_1(self): 225786e6a6cSAndrew Jeffery pt = PathTree() 226786e6a6cSAndrew Jeffery pt['/a'] = 1 227786e6a6cSAndrew Jeffery pt['/a/b'] = 2 228786e6a6cSAndrew Jeffery self.assertEquals(set(['/a']), set(pt.keys(depth=1))) 229786e6a6cSAndrew Jeffery 230786e6a6cSAndrew Jeffery def test_values_2_nested_depth_1(self): 231786e6a6cSAndrew Jeffery pt = PathTree() 232786e6a6cSAndrew Jeffery pt['/a'] = 1 233786e6a6cSAndrew Jeffery pt['/a/b'] = 2 234786e6a6cSAndrew Jeffery self.assertEquals(set([1]), set(pt.values(depth=1))) 235786e6a6cSAndrew Jeffery 236786e6a6cSAndrew Jeffery def test_items_2_nested_depth_1(self): 237786e6a6cSAndrew Jeffery pt = PathTree() 238786e6a6cSAndrew Jeffery pt['/a'] = 1 239786e6a6cSAndrew Jeffery pt['/a/b'] = 2 240786e6a6cSAndrew Jeffery self.assertEquals(set([('/a', 1)]), set(pt.items(depth=1))) 241786e6a6cSAndrew Jeffery 242786e6a6cSAndrew Jeffery def test_dataitems_2_nested_depth_1(self): 243786e6a6cSAndrew Jeffery pt = PathTree() 244786e6a6cSAndrew Jeffery pt['/a'] = 1 245786e6a6cSAndrew Jeffery pt['/a/b'] = 2 246786e6a6cSAndrew Jeffery pt['/b'] = None 247786e6a6cSAndrew Jeffery pt['/b/c'] = 1 248786e6a6cSAndrew Jeffery self.assertEquals(set([('/a', 1)]), set(pt.dataitems(depth=1))) 249786e6a6cSAndrew Jeffery 250786e6a6cSAndrew Jeffery def test_keys_2_nested_subtree(self): 251786e6a6cSAndrew Jeffery pt = PathTree() 252786e6a6cSAndrew Jeffery pt['/a'] = 1 253786e6a6cSAndrew Jeffery pt['/a/b'] = 2 254786e6a6cSAndrew Jeffery pt['/b'] = 3 255786e6a6cSAndrew Jeffery self.assertEquals(set(['/a/b']), set(pt.keys(subtree='/a'))) 256786e6a6cSAndrew Jeffery 257786e6a6cSAndrew Jeffery def test_values_2_nested_subtree(self): 258786e6a6cSAndrew Jeffery pt = PathTree() 259786e6a6cSAndrew Jeffery pt['/a'] = 1 260786e6a6cSAndrew Jeffery pt['/a/b'] = 2 261786e6a6cSAndrew Jeffery pt['/b'] = 3 262786e6a6cSAndrew Jeffery self.assertEquals(set([2]), set(pt.values(subtree='/a'))) 263786e6a6cSAndrew Jeffery 264786e6a6cSAndrew Jeffery def test_items_2_nested_subtree(self): 265786e6a6cSAndrew Jeffery pt = PathTree() 266786e6a6cSAndrew Jeffery pt['/a'] = 1 267786e6a6cSAndrew Jeffery pt['/a/b'] = 2 268786e6a6cSAndrew Jeffery pt['/b'] = 3 269786e6a6cSAndrew Jeffery self.assertEquals(set([('/a/b', 2)]), set(pt.items(subtree='/a'))) 270786e6a6cSAndrew Jeffery 271786e6a6cSAndrew Jeffery def test_dataitems_2_nested_subtree(self): 272786e6a6cSAndrew Jeffery pt = PathTree() 273786e6a6cSAndrew Jeffery pt['/a'] = 1 274786e6a6cSAndrew Jeffery pt['/a/b'] = 2 275786e6a6cSAndrew Jeffery pt['/a/c'] = None 276786e6a6cSAndrew Jeffery pt['/b'] = 3 277786e6a6cSAndrew Jeffery self.assertEquals(set([('/a/b', 2)]), set(pt.dataitems(subtree='/a'))) 278786e6a6cSAndrew Jeffery 279786e6a6cSAndrew Jeffery def test_keys_3_nested_subtree_depth_1(self): 280786e6a6cSAndrew Jeffery pt = PathTree() 281786e6a6cSAndrew Jeffery pt['/a'] = 1 282786e6a6cSAndrew Jeffery pt['/a/b'] = 2 283786e6a6cSAndrew Jeffery pt['/a/b/c'] = 3 284786e6a6cSAndrew Jeffery pt['/b'] = 4 285786e6a6cSAndrew Jeffery self.assertEquals(set(['/a/b']), set(pt.keys(subtree='/a', depth=1))) 286786e6a6cSAndrew Jeffery 287786e6a6cSAndrew Jeffery def test_values_3_nested_subtree_depth_1(self): 288786e6a6cSAndrew Jeffery pt = PathTree() 289786e6a6cSAndrew Jeffery pt['/a'] = 1 290786e6a6cSAndrew Jeffery pt['/a/b'] = 2 291786e6a6cSAndrew Jeffery pt['/a/b/c'] = 3 292786e6a6cSAndrew Jeffery pt['/b'] = 4 293786e6a6cSAndrew Jeffery self.assertEquals(set([2]), set(pt.values(subtree='/a', depth=1))) 294786e6a6cSAndrew Jeffery 295786e6a6cSAndrew Jeffery def test_items_3_nested_subtree_depth_1(self): 296786e6a6cSAndrew Jeffery pt = PathTree() 297786e6a6cSAndrew Jeffery pt['/a'] = 1 298786e6a6cSAndrew Jeffery pt['/a/b'] = 2 299786e6a6cSAndrew Jeffery pt['/a/b/c'] = 3 300786e6a6cSAndrew Jeffery pt['/b'] = 4 301786e6a6cSAndrew Jeffery self.assertEquals(set([('/a/b', 2)]), set(pt.items(subtree='/a', depth=1))) 302786e6a6cSAndrew Jeffery 303786e6a6cSAndrew Jeffery def test_items_3_nested_subtree_depth_1(self): 304786e6a6cSAndrew Jeffery pt = PathTree() 305786e6a6cSAndrew Jeffery pt['/a'] = 1 306786e6a6cSAndrew Jeffery pt['/a/b'] = 2 307786e6a6cSAndrew Jeffery pt['/a/b/c'] = 3 308786e6a6cSAndrew Jeffery pt['/a/c'] = None 309786e6a6cSAndrew Jeffery pt['/b'] = 4 310786e6a6cSAndrew Jeffery self.assertEquals(set([('/a/b', 2)]), set(pt.dataitems(subtree='/a', depth=1))) 3113ba497a9SAndrew Jeffery 3123ba497a9SAndrew Jefferyimport timeit 3133ba497a9SAndrew Jefferyimport sys 3143ba497a9SAndrew Jeffery 3153ba497a9SAndrew Jefferydef depth_stress(pt, k): 3163ba497a9SAndrew Jeffery pt[k] = 1 3173ba497a9SAndrew Jeffery pt[k] = pt[k] + 1 3183ba497a9SAndrew Jeffery del pt[k] 3193ba497a9SAndrew Jeffery 3203ba497a9SAndrew Jefferydepth_setup = """\ 3213ba497a9SAndrew Jefferyfrom __main__ import depth_stress 3223ba497a9SAndrew Jefferyfrom obmc.utils.pathtree import PathTree 3233ba497a9SAndrew Jefferypt = PathTree() 3243ba497a9SAndrew Jefferykey = '/' + '/'.join(['a'] * {}) 3253ba497a9SAndrew Jeffery""" 3263ba497a9SAndrew Jeffery 3273ba497a9SAndrew Jefferydef width_stress(pt, k): 3283ba497a9SAndrew Jeffery pt.get_children(k) 3293ba497a9SAndrew Jeffery 3303ba497a9SAndrew Jefferywidth_setup = """\ 3313ba497a9SAndrew Jefferyfrom __main__ import width_stress 3323ba497a9SAndrew Jefferyfrom obmc.utils.pathtree import PathTree 3333ba497a9SAndrew Jefferypt = PathTree() 3343ba497a9SAndrew Jefferyfor i in range(0, {}): 3353ba497a9SAndrew Jeffery pt["/{}/a".format(i)] = i 3363ba497a9SAndrew Jefferykey = '/0/a' 3373ba497a9SAndrew Jeffery""" 3383ba497a9SAndrew Jeffery 339*13d0dc9fSAndrew Jefferydef iter_stress(pt): 340*13d0dc9fSAndrew Jeffery for i in pt.dataitems(): 341*13d0dc9fSAndrew Jeffery pass 342*13d0dc9fSAndrew Jeffery 343*13d0dc9fSAndrew Jefferyiter_setup = """\ 344*13d0dc9fSAndrew Jefferyfrom __main__ import iter_stress 345*13d0dc9fSAndrew Jefferyfrom obmc.utils.pathtree import PathTree 346*13d0dc9fSAndrew Jefferypt = PathTree() 347*13d0dc9fSAndrew Jefferyfor i in ('/' + '/'.join([chr(ord('a') + x)] * {}) for x in range(0, 26)): 348*13d0dc9fSAndrew Jeffery for j in range(0, {}): 349*13d0dc9fSAndrew Jeffery k = "{}".format(i, j) 350*13d0dc9fSAndrew Jeffery pt[k] = k 351*13d0dc9fSAndrew Jeffery""" 352*13d0dc9fSAndrew Jeffery 3533ba497a9SAndrew Jefferyif __name__ == "__main__": 3543ba497a9SAndrew Jeffery print("Depth tests:") 3553ba497a9SAndrew Jeffery for depth in range(1, 11): 3563ba497a9SAndrew Jeffery setup = depth_setup.format(depth) 3573ba497a9SAndrew Jeffery stmt = "depth_stress(pt, key)" 3583ba497a9SAndrew Jeffery time = timeit.timeit(stmt, setup=setup) 3593ba497a9SAndrew Jeffery print("\t{}: {}".format(depth, time)) 3603ba497a9SAndrew Jeffery print 3613ba497a9SAndrew Jeffery print("Width tests:") 3623ba497a9SAndrew Jeffery for width in map(lambda x: 2 ** x, range(0, 21)): 3633ba497a9SAndrew Jeffery setup = width_setup.format(width, "{}") 3643ba497a9SAndrew Jeffery stmt = "width_stress(pt, key)" 3653ba497a9SAndrew Jeffery time = timeit.timeit(stmt, setup=setup) 3663ba497a9SAndrew Jeffery print("\t{}: {}".format(width, time)) 367*13d0dc9fSAndrew Jeffery print 368*13d0dc9fSAndrew Jeffery print("Iteration tests:") 369*13d0dc9fSAndrew Jeffery n = 1000 370*13d0dc9fSAndrew Jeffery for depth in range(1, 5): 371*13d0dc9fSAndrew Jeffery for width in range(1, 5): 372*13d0dc9fSAndrew Jeffery setup = iter_setup.format(depth, width, "{}/{}") 373*13d0dc9fSAndrew Jeffery stmt = "iter_stress(pt)" 374*13d0dc9fSAndrew Jeffery time = timeit.timeit(stmt, setup=setup, number=n) 375*13d0dc9fSAndrew Jeffery print("\tdepth={}, width={}, n={}: {}".format(depth, width, n, time)) 376