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

Side by Side Diff: third_party/psutil/test/test_memory_leaks.py

Issue 6246123: Moving psutil to third_party. This is first step for Media Performance test project. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: modification based on code review's comments Created 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/psutil/test/_windows.py ('k') | third_party/psutil/test/test_psutil.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 #
3 # $Id: test_memory_leaks.py 777 2010-11-08 18:29:13Z g.rodola $
4 #
5
6 """
7 Note: this is targeted for python 2.x.
8 To run it under python 3.x you need to use 2to3 tool first:
9
10 $ 2to3 -w test/test_memory_leaks.py
11 """
12
13
14 import os
15 import gc
16 import sys
17 import unittest
18
19 import psutil
20 from test_psutil import reap_children, skipUnless, skipIf, \
21 POSIX, LINUX, WINDOWS, OSX, BSD
22
23 LOOPS = 1000
24 TOLERANCE = 4096
25
26
27 class TestProcessObjectLeaks(unittest.TestCase):
28 """Test leaks of Process class methods and properties"""
29
30 def setUp(self):
31 gc.collect()
32
33 def tearDown(self):
34 reap_children()
35
36 def execute(self, method, *args, **kwarks):
37 # step 1
38 p = psutil.Process(os.getpid())
39 for x in xrange(LOOPS):
40 obj = getattr(p, method)
41 if callable(obj):
42 retvalue = obj(*args, **kwarks)
43 else:
44 retvalue = obj # property
45 del x, p, obj, retvalue
46 gc.collect()
47 rss1 = psutil.Process(os.getpid()).get_memory_info()[0]
48
49 # step 2
50 p = psutil.Process(os.getpid())
51 for x in xrange(LOOPS):
52 obj = getattr(p, method)
53 if callable(obj):
54 retvalue = obj(*args, **kwarks)
55 else:
56 retvalue = obj # property
57 del x, p, obj, retvalue
58 gc.collect()
59 rss2 = psutil.Process(os.getpid()).get_memory_info()[0]
60
61 # comparison
62 difference = rss2 - rss1
63 if difference > TOLERANCE:
64 self.fail("rss1=%s, rss2=%s, difference=%s" %(rss1, rss2, difference ))
65
66 def test_name(self):
67 self.execute('name')
68
69 def test_cmdline(self):
70 self.execute('cmdline')
71
72 def test_ppid(self):
73 self.execute('ppid')
74
75 def test_uid(self):
76 self.execute('uid')
77
78 def test_uid(self):
79 self.execute('gid')
80
81 @skipIf(POSIX)
82 def test_username(self):
83 self.execute('username')
84
85 def test_create_time(self):
86 self.execute('create_time')
87
88 def test_get_num_threads(self):
89 self.execute('get_num_threads')
90
91 def test_get_cpu_times(self):
92 self.execute('get_cpu_times')
93
94 def test_get_memory_info(self):
95 self.execute('get_memory_info')
96
97 def test_is_running(self):
98 self.execute('is_running')
99
100 @skipUnless(WINDOWS)
101 def test_resume(self):
102 self.execute('resume')
103
104 @skipUnless(WINDOWS)
105 def test_getcwd(self):
106 self.execute('getcwd')
107
108 @skipUnless(WINDOWS)
109 def test_get_open_files(self):
110 self.execute('get_open_files')
111
112 @skipUnless(WINDOWS)
113 def test_get_connections(self):
114 self.execute('get_connections')
115
116
117 class TestModuleFunctionsLeaks(unittest.TestCase):
118 """Test leaks of psutil module functions."""
119
120 def setUp(self):
121 gc.collect()
122
123 def execute(self, function, *args, **kwarks):
124 # step 1
125 for x in xrange(LOOPS):
126 obj = getattr(psutil, function)
127 if callable(obj):
128 retvalue = obj(*args, **kwarks)
129 else:
130 retvalue = obj # property
131 del x, obj, retvalue
132 gc.collect()
133 rss1 = psutil.Process(os.getpid()).get_memory_info()[0]
134
135 # step 2
136 for x in xrange(LOOPS):
137 obj = getattr(psutil, function)
138 if callable(obj):
139 retvalue = obj(*args, **kwarks)
140 else:
141 retvalue = obj # property
142 del x, obj, retvalue
143 gc.collect()
144 rss2 = psutil.Process(os.getpid()).get_memory_info()[0]
145
146 # comparison
147 difference = rss2 - rss1
148 if difference > TOLERANCE:
149 self.fail("rss1=%s, rss2=%s, difference=%s" %(rss1, rss2, difference ))
150
151 def test_get_pid_list(self):
152 self.execute('get_pid_list')
153
154 @skipIf(POSIX)
155 def test_pid_exists(self):
156 self.execute('pid_exists', os.getpid())
157
158 def test_process_iter(self):
159 self.execute('process_iter')
160
161 def test_used_phymem(self):
162 self.execute('used_phymem')
163
164 def test_avail_phymem(self):
165 self.execute('avail_phymem')
166
167 def test_total_virtmem(self):
168 self.execute('total_virtmem')
169
170 def test_used_virtmem(self):
171 self.execute('used_virtmem')
172
173 def test_avail_virtmem(self):
174 self.execute('avail_virtmem')
175
176 def test_cpu_times(self):
177 self.execute('cpu_times')
178
179
180 def test_main():
181 test_suite = unittest.TestSuite()
182 test_suite.addTest(unittest.makeSuite(TestProcessObjectLeaks))
183 test_suite.addTest(unittest.makeSuite(TestModuleFunctionsLeaks))
184 unittest.TextTestRunner(verbosity=2).run(test_suite)
185
186 if __name__ == '__main__':
187 test_main()
188
OLDNEW
« no previous file with comments | « third_party/psutil/test/_windows.py ('k') | third_party/psutil/test/test_psutil.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698