1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 2a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch# Use of this source code is governed by a BSD-style license that can be 3a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch# found in the LICENSE file. 4a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 5a3f7b4e666c476898878fa745f637129375cd889Ben Murdochimport unittest 6a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)from telemetry.timeline.slice import Slice 8a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 9a3f7b4e666c476898878fa745f637129375cd889Ben Murdochclass SliceTest(unittest.TestCase): 10a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch def testChildrenLogic(self): 11a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch # [ top ] 12a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch # [ a ] [ b ] 13a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch # [x] 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) top = Slice(None, 'cat', 'top', 0, duration=10, thread_timestamp=0, 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) thread_duration=5) 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) a = Slice(None, 'cat', 'a', 1, duration=2, thread_timestamp=0.5, 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) thread_duration=1) 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) x = Slice(None, 'cat', 'x', 1.5, duration=0.25, thread_timestamp=0.75, 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) thread_duration=0.125) 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) b = Slice(None, 'cat', 'b', 5, duration=2, thread_timestamp=None, 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) thread_duration=None) 22a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch top.sub_slices.extend([a, b]) 23a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch a.sub_slices.append(x) 24a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 25a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch all_children = list(top.IterEventsInThisContainerRecrusively()) 26a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch self.assertEquals([a, x, b], all_children) 27a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 28a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch self.assertEquals(x.self_time, 0.25) 29a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch self.assertEquals(a.self_time, 1.75) # 2 - 0.25 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) self.assertEquals(top.self_time, 6) # 10 - 2 - 2 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) self.assertEquals(x.self_thread_time, 0.125) 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) self.assertEquals(a.self_thread_time, 0.875) # 1 - 0.125 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) self.assertEquals(top.self_thread_time, None) # b has no thread time 35