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 |