Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import unittest | 5 import unittest |
| 6 | 6 |
| 7 import telemetry.timeline.counter as tracing_counter | 7 import telemetry.timeline.counter as tracing_counter |
| 8 import telemetry.timeline.model as timeline_model | 8 import telemetry.timeline.model as timeline_model |
| 9 from telemetry.timeline import trace_data as trace_data_module | 9 from telemetry.timeline import trace_data as trace_data_module |
| 10 | 10 |
| (...skipping 1041 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1052 trace_data = trace_data_module.TraceData(events) | 1052 trace_data = trace_data_module.TraceData(events) |
| 1053 m = timeline_model.TimelineModel(trace_data) | 1053 m = timeline_model.TimelineModel(trace_data) |
| 1054 self.assertEqual(0, len(m.flow_events)) | 1054 self.assertEqual(0, len(m.flow_events)) |
| 1055 | 1055 |
| 1056 def testImportMemoryDumpEvents(self): | 1056 def testImportMemoryDumpEvents(self): |
| 1057 events = [ | 1057 events = [ |
| 1058 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 123, | 1058 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 123, |
| 1059 'id': '1234ABCD'}, | 1059 'id': '1234ABCD'}, |
| 1060 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 54, 'ts': 134, | 1060 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 54, 'ts': 134, |
| 1061 'id': '1234ABCD'}, | 1061 'id': '1234ABCD'}, |
| 1062 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 134, | |
| 1063 'id': '1234ABCD'}, | |
| 1062 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 245, | 1064 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 245, |
| 1063 'id': '1234ABDF'}, | 1065 'id': '1234ABDF'}, |
| 1064 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 54, 'ts': 256, | 1066 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 54, 'ts': 256, |
| 1065 'id': '1234ABDF'}, | 1067 'id': '1234ABDF'}, |
| 1068 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 256, | |
| 1069 'id': '1234ABDF'}, | |
| 1066 ] | 1070 ] |
| 1067 | 1071 |
| 1068 expected = [['1234ABCD', 0, 11], ['1234ABDF', 122, 11]] | 1072 expected_processes = set([52, 54]) |
| 1073 expected_results = [['1234ABCD', 0, 11], ['1234ABDF', 122, 11]] | |
| 1069 trace_data = trace_data_module.TraceData(events) | 1074 trace_data = trace_data_module.TraceData(events) |
| 1070 m = timeline_model.TimelineModel(trace_data) | 1075 m = timeline_model.TimelineModel(trace_data) |
| 1076 assert set(p.pid for p in m.GetAllProcesses()) == expected_processes | |
| 1077 | |
| 1071 memory_dumps = list(m.IterGlobalMemoryDumps()) | 1078 memory_dumps = list(m.IterGlobalMemoryDumps()) |
| 1072 self.assertEqual(len(expected), len(memory_dumps)) | 1079 self.assertEqual(len(expected_results), len(memory_dumps)) |
| 1073 for memory_dump, test_values in zip(memory_dumps, expected): | 1080 for memory_dump, test_values in zip(memory_dumps, expected_results): |
| 1081 assert len(list(memory_dump.IterProcessMemoryDumps())) == len( | |
| 1082 expected_processes) | |
| 1074 dump_id, start, duration = test_values | 1083 dump_id, start, duration = test_values |
| 1075 self.assertEquals(dump_id, memory_dump.dump_id) | 1084 self.assertEquals(dump_id, memory_dump.dump_id) |
| 1076 self.assertAlmostEqual(start / 1000.0, memory_dump.start) | 1085 self.assertAlmostEqual(start / 1000.0, memory_dump.start) |
| 1077 self.assertAlmostEqual(duration / 1000.0, memory_dump.duration) | 1086 self.assertAlmostEqual(duration / 1000.0, memory_dump.duration) |
| 1078 | 1087 |
| 1088 def testImportComposableMemoryDumpEvents(self): | |
|
perezju
2016/01/12 15:53:38
I still feel this is more complicated than it has
ssid
2016/01/12 17:13:18
True. I have added to the previous test and remove
perezju
2016/01/13 16:30:34
sgtm
| |
| 1089 events = [ | |
| 1090 { | |
| 1091 'name': 'a', | |
| 1092 'cat': 'b', | |
| 1093 'ph': 'v', | |
| 1094 'pid': 52, | |
| 1095 'ts': 123, | |
| 1096 'id': '123', | |
| 1097 'args': { | |
| 1098 'dumps': { | |
| 1099 'allocators': { | |
| 1100 'v8': {'attrs': {'size': {'units': 'bytes', 'value': '0xa'}}} | |
| 1101 } | |
| 1102 } | |
| 1103 } | |
| 1104 }, | |
| 1105 { | |
| 1106 'name': 'a', | |
| 1107 'cat': 'b', | |
| 1108 'ph': 'v', | |
| 1109 'pid': 54, | |
| 1110 'ts': 134, | |
| 1111 'id': '123', | |
| 1112 'args': { | |
| 1113 'dumps': { | |
| 1114 'allocators': { | |
| 1115 'v8': {'attrs': {'size': {'units': 'bytes', 'value': '0xc'}}} | |
| 1116 }, | |
| 1117 'process_mmaps': {'vm_regions': [{'mf': '', 'bs': {'pss': '0xd'}}]} | |
| 1118 } | |
| 1119 } | |
| 1120 }, | |
| 1121 { | |
| 1122 'name': 'a', | |
| 1123 'cat': 'b', | |
| 1124 'ph': 'v', | |
| 1125 'pid': 52, | |
| 1126 'ts': 134, | |
| 1127 'id': '123', | |
| 1128 'args': { | |
| 1129 'dumps': { | |
| 1130 'process_mmaps': {'vm_regions': [{'mf': '', 'bs': {'pss': '0xb'}}]} | |
| 1131 } | |
| 1132 } | |
| 1133 } | |
| 1134 ] | |
| 1135 | |
| 1136 expected = [[10, 11], [12, 13]] | |
| 1137 trace_data = trace_data_module.TraceData(events) | |
| 1138 m = timeline_model.TimelineModel(trace_data) | |
| 1139 memory_dumps_iter = m.IterGlobalMemoryDumps() | |
| 1140 process_dumps = list(next(memory_dumps_iter).IterProcessMemoryDumps()) | |
| 1141 assert len(process_dumps) == len(expected) | |
| 1142 for process_dump, test_values in zip(process_dumps, expected): | |
| 1143 v8_size, heap_size = test_values | |
| 1144 assert process_dump.has_mmaps | |
| 1145 assert process_dump.GetMemoryBucket('/Native heap').GetValue( | |
| 1146 'proportional_resident') == heap_size | |
| 1147 assert process_dump.GetMemoryUsage()['allocator_v8'] == v8_size | |
| 1148 assert not next(memory_dumps_iter, None) | |
| 1149 | |
| 1079 def testImportOutOfOrderMemoryDumpEvents(self): | 1150 def testImportOutOfOrderMemoryDumpEvents(self): |
| 1080 events = [ | 1151 events = [ |
| 1081 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 245, | 1152 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 245, |
| 1082 'id': '1234ABDF'}, | 1153 'id': '1234ABDF'}, |
| 1083 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 54, 'ts': 134, | 1154 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 54, 'ts': 134, |
| 1084 'id': '1234ABCD'}, | 1155 'id': '1234ABCD'}, |
| 1085 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 54, 'ts': 256, | 1156 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 54, 'ts': 256, |
| 1086 'id': '1234ABDF'}, | 1157 'id': '1234ABDF'}, |
| 1087 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 123, | 1158 {'name': 'a', 'cat': 'b', 'ph': 'v', 'pid': 52, 'ts': 123, |
| 1088 'id': '1234ABCD'}, | 1159 'id': '1234ABCD'}, |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 1114 ] | 1185 ] |
| 1115 trace_data = trace_data_module.TraceData(events) | 1186 trace_data = trace_data_module.TraceData(events) |
| 1116 m = timeline_model.TimelineModel(trace_data) | 1187 m = timeline_model.TimelineModel(trace_data) |
| 1117 processes = m.GetAllProcesses() | 1188 processes = m.GetAllProcesses() |
| 1118 | 1189 |
| 1119 self.assertEqual(len(processes), len(expected)) | 1190 self.assertEqual(len(processes), len(expected)) |
| 1120 for process, test_values in zip(processes, expected): | 1191 for process, test_values in zip(processes, expected): |
| 1121 process_labels, process_name = test_values | 1192 process_labels, process_name = test_values |
| 1122 self.assertEquals(process_labels, process.labels) | 1193 self.assertEquals(process_labels, process.labels) |
| 1123 self.assertEquals(process_name, process.name) | 1194 self.assertEquals(process_name, process.name) |
| OLD | NEW |