Index: tools/telemetry/telemetry/core/timeline/thread_unittest.py |
diff --git a/tools/telemetry/telemetry/core/timeline/thread_unittest.py b/tools/telemetry/telemetry/core/timeline/thread_unittest.py |
index 4b5818ea4d71d76b1e4792a371df438c369e34b8..9121f0c3a67710d80603b6503fc8f151680091c1 100644 |
--- a/tools/telemetry/telemetry/core/timeline/thread_unittest.py |
+++ b/tools/telemetry/telemetry/core/timeline/thread_unittest.py |
@@ -7,7 +7,7 @@ from telemetry.core.timeline import model as model_module |
class ThreadUnittest(unittest.TestCase): |
- def testIterAllSlicesInRange(self): |
+ def testIterAllSlicesInTimeRange(self): |
model = model_module.TimelineModel() |
renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
# [ X ] [ Y ] [ U ] |
@@ -27,5 +27,38 @@ class ThreadUnittest(unittest.TestCase): |
model.FinalizeImport(shift_world_to_zero=False) |
slice_names = set(s.name for s in |
- renderer_main.IterAllSlicesInRange(start=12, end=65)) |
+ renderer_main.IterAllSlicesInTimeRange(start=12, end=65)) |
self.assertEqual(slice_names, {'Z', 'Y', 'T'}) |
+ |
+ def testIterAllSlicesOverlappedWithThreadTimeRange(self): |
+ model = model_module.TimelineModel() |
+ renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
+ # [ X ] [ Y ] [ U ] |
+ # [ Z ] [ T ] |
+ # | | |
+ # start end |
+ |
+ # Z starts at 5 and ends at 12 (thread time) |
+ renderer_main.BeginSlice('cat1', 'Z', 10, 5) |
+ renderer_main.EndSlice(20, 10) |
+ |
+ # X starts at 15 and ends at 25 (thread time) |
+ # T starts at 17 and ends at 20 (thread time) |
+ renderer_main.BeginSlice('cat1', 'X', 20, 15) |
+ renderer_main.BeginSlice('cat1', 'T', 22, 17) |
+ renderer_main.EndSlice(25, 20) |
+ renderer_main.EndSlice(35, 25) |
+ |
+ # Y starts at 30 and ends at 45 (thread time) |
+ renderer_main.BeginSlice('cat1', 'Y', 50, 30) |
+ renderer_main.EndSlice(60, 45) |
+ |
+ # U starts at 55 and ends at 65 (thread time) |
+ renderer_main.BeginSlice('cat1', 'U', 60, 55) |
+ renderer_main.EndSlice(70, 65) |
+ |
+ model.FinalizeImport(shift_world_to_zero=False) |
+ slice_names = set( |
+ s.name for s in |
+ renderer_main.IterAllSlicesOverlappedWithThreadTimeRange(16, 35)) |
+ self.assertEqual(slice_names, {'X', 'Y', 'T'}) |