Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Side by Side Diff: tools/telemetry/telemetry/timeline/trace_event_importer_unittest.py

Issue 1553183002: [telemetry] Add support for composable process dumps in memory-infra (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698