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

Unified Diff: tools/telemetry/telemetry/core/heap/chrome_js_heap_snapshot_parser_unittest.py

Issue 24076016: Add JS heap snapshotting functionality to Telemetry (part 2) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code review (nduca) Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/heap/chrome_js_heap_snapshot_parser_unittest.py
diff --git a/tools/telemetry/telemetry/core/heap/chrome_js_heap_snapshot_parser_unittest.py b/tools/telemetry/telemetry/core/heap/chrome_js_heap_snapshot_parser_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..478e28b46fc031596cb1dc07a6ad08ef9c7fb961
--- /dev/null
+++ b/tools/telemetry/telemetry/core/heap/chrome_js_heap_snapshot_parser_unittest.py
@@ -0,0 +1,56 @@
+# Copyright (c) 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import json
+import unittest
+
+from telemetry.core.heap import chrome_js_heap_snapshot_parser
+
+class ChromeJsHeapSnapshotParserUnittest(unittest.TestCase):
+ def _HeapSnapshotData(self, node_types, edge_types, node_fields, edge_fields,
+ node_list, edge_list, strings):
+ """Helper for creating heap snapshot data."""
+ return {'snapshot': {'meta': {'node_types': [node_types],
+ 'edge_types': [edge_types],
+ 'node_fields': node_fields,
+ 'edge_fields': edge_fields}},
+ 'nodes': node_list,
+ 'edges': edge_list,
+ 'strings': strings}
+
+ def testParseSimpleSnapshot(self):
+ # Create a snapshot containing 2 nodes and an edge between them.
+ node_types = ['object']
+ edge_types = ['property']
+ node_fields = ['type', 'name', 'id', 'edge_count']
+ edge_fields = ['type', 'name_or_index', 'to_node']
+ node_list = [0, 0, 0, 1,
+ 0, 1, 1, 0]
+ edge_list = [0, 2, 4]
+ strings = ['node1', 'node2', 'edge1']
+ heap = self._HeapSnapshotData(node_types, edge_types, node_fields,
+ edge_fields, node_list, edge_list, strings)
+ objects = list(chrome_js_heap_snapshot_parser.ChromeJsHeapSnapshotParser(
+ json.dumps(heap)).GetAllLiveHeapObjects())
+ self.assertEqual(2, len(objects))
+ if objects[0].edges_from:
+ from_ix = 0
+ to_ix = 1
+ else:
+ from_ix = 1
+ to_ix = 0
+ self.assertEqual('node1', objects[from_ix].class_name)
+ self.assertEqual('node2', objects[to_ix].class_name)
+ self.assertEqual(1, len(objects[from_ix].edges_from))
+ self.assertEqual(0, len(objects[from_ix].edges_to))
+ self.assertEqual(0, len(objects[to_ix].edges_from))
+ self.assertEqual(1, len(objects[to_ix].edges_to))
+ self.assertEqual('node1',
+ objects[from_ix].edges_from[0].from_object.class_name)
+ self.assertEqual('node2',
+ objects[from_ix].edges_from[0].to_object.class_name)
+ self.assertEqual('edge1', objects[from_ix].edges_from[0].name_string)
+ self.assertEqual('node1', objects[to_ix].edges_to[0].from_object.class_name)
+ self.assertEqual('node2', objects[to_ix].edges_to[0].to_object.class_name)
+ self.assertEqual('edge1', objects[to_ix].edges_to[0].name_string)

Powered by Google App Engine
This is Rietveld 408576698