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

Unified Diff: tools/memory_inspector/memory_inspector/classification/rules_unittest.py

Issue 183173003: Add the core classification infrastructure to memory_inspector. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Keep the full keys instead of just num_keys Created 6 years, 10 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
« no previous file with comments | « tools/memory_inspector/memory_inspector/classification/rules.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/memory_inspector/memory_inspector/classification/rules_unittest.py
diff --git a/tools/memory_inspector/memory_inspector/classification/rules_unittest.py b/tools/memory_inspector/memory_inspector/classification/rules_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..1e576882f9c56b69add6ac67e04f3b13fc558303
--- /dev/null
+++ b/tools/memory_inspector/memory_inspector/classification/rules_unittest.py
@@ -0,0 +1,97 @@
+# Copyright 2014 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 unittest
+
+from memory_inspector.classification import rules
+
+
+_TEST_RULE = """
+[
+{
+ 'name': '1',
+ 'mmap-file': r'/foo/1',
+ 'foo': 'bar',
+ 'children': [
+ {
+ 'name': '1/1',
+ 'mmap-file': r'/foo/1/1',
+ 'children': []
+ },
+ {
+ 'name': '1/2',
+ 'mmap-file': r'/foo/1/2',
+ },
+ ]
+},
+{
+ 'name': '2',
+ 'mmap-file': r'/bar/2',
+ 'children': [
+ {
+ 'name': '2/1',
+ 'mmap-file': r'/bar/2/1',
+ },
+ {
+ 'name': '2/2',
+ 'mmap-file': r'/bar/2/2',
+ 'children': [
+ {
+ 'name': '2/2/1',
+ 'mmap-file': r'/bar/2/2/1',
+ },
+ {
+ 'name': '2/2/2',
+ 'mmap-file': r'/bar/2/2/2',
+ },
+ ]
+ },
+ {
+ 'name': '2/3',
+ 'mmap-file': r'/bar/3',
+ },
+ ]
+},
+]
+"""
+
+
+class RulesTest(unittest.TestCase):
+ def runTest(self):
+ rt = rules.Load(_TEST_RULE, MockRule)
+ self.assertEqual(rt.name, 'Total')
+ self.assertEqual(len(rt.children), 3)
+ node1 = rt.children[0]
+ node2 = rt.children[1]
+ node3 = rt.children[2]
+
+ # Check 1-st level leaves.
+ self.assertEqual(node1.name, '1')
+ self.assertEqual(node1.filters['mmap-file'], '/foo/1')
+ self.assertEqual(node1.filters['foo'], 'bar')
+ self.assertEqual(node2.name, '2')
+ self.assertEqual(node2.filters['mmap-file'], '/bar/2')
+ self.assertEqual(node3.name, 'Total-other')
+
+ # Check 2-nd level leaves and their children.
+ self.assertEqual(len(node1.children), 3)
+ self.assertEqual(node1.children[0].name, '1/1')
+ self.assertEqual(node1.children[1].name, '1/2')
+ self.assertEqual(node1.children[2].name, '1-other')
+ self.assertEqual(len(node2.children), 4)
+ self.assertEqual(node2.children[0].name, '2/1')
+ self.assertEqual(len(node2.children[0].children), 0)
+ self.assertEqual(node2.children[1].name, '2/2')
+ self.assertEqual(len(node2.children[1].children), 3)
+ self.assertEqual(node2.children[2].name, '2/3')
+ self.assertEqual(len(node2.children[2].children), 0)
+ self.assertEqual(node2.children[3].name, '2-other')
+ self.assertEqual(len(node2.children[3].children), 0)
+
+
+
+class MockRule(rules.Rule):
+ def __init__(self, name, filters):
+ super(MockRule, self).__init__(name)
+ self.filters = filters
« no previous file with comments | « tools/memory_inspector/memory_inspector/classification/rules.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698