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

Unified Diff: tools/memory_inspector/memory_inspector/classification/results_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
Index: tools/memory_inspector/memory_inspector/classification/results_unittest.py
diff --git a/tools/memory_inspector/memory_inspector/classification/results_unittest.py b/tools/memory_inspector/memory_inspector/classification/results_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..f0af824d8ea6239a2b9f1711b4d1d85f8db79dde
--- /dev/null
+++ b/tools/memory_inspector/memory_inspector/classification/results_unittest.py
@@ -0,0 +1,63 @@
+# 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 re
+import unittest
+
+from memory_inspector.classification import results
+from memory_inspector.classification import rules
+
+
+class ResultsTest(unittest.TestCase):
+ def runTest(self):
+ rules_dict = [
+ {
+ 'name': 'a*',
+ 'regex': '^a.*',
+ 'children': [
+ {
+ 'name': 'az*',
+ 'regex': '^az.*'
+ }
+ ]
+ },
+ {
+ 'name': 'b*',
+ 'regex': '^b.*',
+ },
+ ]
+
+ rule = rules.Load(str(rules_dict), MockRegexMatchingRule)
+ result = results.AggreatedResults(rule, keys=['X', 'Y'])
+ self.assertEqual(result.total.name, 'Total')
+ self.assertEqual(len(result.total.children), 3)
+ self.assertEqual(result.total.children[0].name, 'a*')
+ self.assertEqual(result.total.children[1].name, 'b*')
+ self.assertEqual(result.total.children[2].name, 'Total-other')
+ self.assertEqual(result.total.children[0].children[0].name, 'az*')
+ self.assertEqual(result.total.children[0].children[1].name, 'a*-other')
+
+ result.AddToMatchingNodes('aa1', [1, 2]) # -> a*
+ result.AddToMatchingNodes('aa2', [3, 4]) # -> a*
+ result.AddToMatchingNodes('az', [5, 6]) # -> a*/az*
+ result.AddToMatchingNodes('z1', [7, 8]) # -> T-other
+ result.AddToMatchingNodes('b1', [9, 10]) # -> b*
+ result.AddToMatchingNodes('b2', [11, 12]) # -> b*
+ result.AddToMatchingNodes('z2', [13, 14]) # -> T-other
+
+ self.assertEqual(result.total.values, [49, 56])
+ self.assertEqual(result.total.children[0].values, [9, 12])
+ self.assertEqual(result.total.children[1].values, [20, 22])
+ self.assertEqual(result.total.children[0].children[0].values, [5, 6])
+ self.assertEqual(result.total.children[0].children[1].values, [4, 6])
+ self.assertEqual(result.total.children[2].values, [20, 22])
+
+
+class MockRegexMatchingRule(rules.Rule):
+ def __init__(self, name, filters):
+ super(MockRegexMatchingRule, self).__init__(name)
+ self._regex = filters['regex']
+
+ def Match(self, s):
+ return bool(re.match(self._regex, s))

Powered by Google App Engine
This is Rietveld 408576698