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

Side by Side Diff: tools/deep_memory_profiler/tests/dmprof_test.py

Issue 11417048: Retry: Add a first test for tools/deep_memory_profiler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 import cStringIO
7 import logging
8 import os
9 import sys
10 import unittest
11
12 ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
13 sys.path.insert(0, ROOT_DIR)
14
15 import dmprof
16 from dmprof import FUNCTION_ADDRESS, TYPEINFO_ADDRESS
17
18
19 class MockSymbolCache(object):
20 def __init__(self):
21 self._symbol_caches = {FUNCTION_ADDRESS: {}, TYPEINFO_ADDRESS: {}}
22
23 def add(self, address_type, address, symbol):
24 self._symbol_caches[address_type][address] = symbol
25
26 def lookup(self, address_type, address):
27 symbol = self._symbol_caches[address_type].get(address)
28 return symbol if symbol else '0x%016x' % address
29
30
31 class PolicyTest(unittest.TestCase):
32 _TEST_POLICY = """{
33 "components": [
34 "second",
35 "mmap-v8",
36 "malloc-v8",
37 "malloc-WebKit",
38 "mmap-catch-all",
39 "malloc-catch-all"
40 ],
41 "rules": [
42 {
43 "name": "second",
44 "stacktrace": "optional",
45 "allocator": "optional"
46 },
47 {
48 "name": "mmap-v8",
49 "stacktrace": ".*v8::.*",
50 "allocator": "mmap"
51 },
52 {
53 "name": "malloc-v8",
54 "stacktrace": ".*v8::.*",
55 "allocator": "malloc"
56 },
57 {
58 "name": "malloc-WebKit",
59 "stacktrace": ".*WebKit::.*",
60 "allocator": "malloc"
61 },
62 {
63 "name": "mmap-catch-all",
64 "stacktrace": ".*",
65 "allocator": "mmap"
66 },
67 {
68 "name": "malloc-catch-all",
69 "stacktrace": ".*",
70 "allocator": "malloc"
71 }
72 ],
73 "version": "POLICY_DEEP_3"
74 }
75 """
76
77 def test_load(self):
78 policy = dmprof.Policy.parse(cStringIO.StringIO(self._TEST_POLICY), 'json')
79 self.assertTrue(policy)
80 self.assertEqual(policy.version, 'POLICY_DEEP_3')
81
82 def test_find(self):
83 policy = dmprof.Policy.parse(cStringIO.StringIO(self._TEST_POLICY), 'json')
84 self.assertTrue(policy)
85
86 symbol_cache = MockSymbolCache()
87 symbol_cache.add(FUNCTION_ADDRESS, 0x1212, 'v8::create')
88 symbol_cache.add(FUNCTION_ADDRESS, 0x1381, 'WebKit::create')
89
90 bucket1 = dmprof.Bucket([0x1212, 0x013], False, 0x29492, '_Z')
91 bucket1.symbolize(symbol_cache)
92 bucket2 = dmprof.Bucket([0x18242, 0x1381], False, 0x9492, '_Z')
93 bucket2.symbolize(symbol_cache)
94 bucket3 = dmprof.Bucket([0x18242, 0x181], False, 0x949, '_Z')
95 bucket3.symbolize(symbol_cache)
96
97 self.assertEqual(policy.find(bucket1), 'malloc-v8')
98 self.assertEqual(policy.find(bucket2), 'malloc-WebKit')
99 self.assertEqual(policy.find(bucket3), 'malloc-catch-all')
100
101
102 if __name__ == '__main__':
103 logging.basicConfig(
104 level=logging.DEBUG if '-v' in sys.argv else logging.ERROR,
105 format='%(levelname)5s %(filename)15s(%(lineno)3d): %(message)s')
106 unittest.main()
OLDNEW
« tools/deep_memory_profiler/dmprof.py ('K') | « tools/deep_memory_profiler/dmprof.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698