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

Side by Side Diff: infra/libs/service_utils/test/_daemon_nix_test.py

Issue 1365583002: Have service_manager start a cloudtail attached to each service it starts. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Just use the default project ID Created 5 years, 2 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
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import contextlib 5 import contextlib
6 import collections 6 import collections
7 import errno 7 import errno
8 import os 8 import os
9 import sys 9 import sys
10 import unittest 10 import unittest
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 172
173 def testClosesFdWithExceptions(self, _mock_exit, _mock_chdir, _mock_dup2, 173 def testClosesFdWithExceptions(self, _mock_exit, _mock_chdir, _mock_dup2,
174 _mock_open, mock_close, _mock_setsid, 174 _mock_open, mock_close, _mock_setsid,
175 _mock_fork): 175 _mock_fork):
176 daemon.become_daemon(keep_fds={42}) 176 daemon.become_daemon(keep_fds={42})
177 177
178 self.assertEqual(2047, mock_close.call_count) 178 self.assertEqual(2047, mock_close.call_count)
179 self.assertEqual([((i,),) for i in reversed(range(2048)) if i != 42], 179 self.assertEqual([((i,),) for i in reversed(range(2048)) if i != 42],
180 mock_close.call_args_list) 180 mock_close.call_args_list)
181 181
182 def testClosesFdsKeepingAll(self, _mock_exit, _mock_chdir, _mock_dup2,
183 _mock_open, mock_close, _mock_setsid,
184 _mock_fork):
185 daemon.become_daemon(keep_fds=True)
186
187 self.assertEqual(0, mock_close.call_count)
188
182 def testClosesInvalidFds(self, _mock_exit, _mock_chdir, _mock_dup2, 189 def testClosesInvalidFds(self, _mock_exit, _mock_chdir, _mock_dup2,
183 _mock_open, mock_close, _mock_setsid, _mock_fork): 190 _mock_open, mock_close, _mock_setsid, _mock_fork):
184 mock_close.side_effect = EnvironmentError(errno.EIO, '') 191 mock_close.side_effect = EnvironmentError(errno.EIO, '')
185 with self.assertRaises(EnvironmentError): 192 with self.assertRaises(EnvironmentError):
186 daemon.become_daemon() 193 daemon.become_daemon()
187 194
188 mock_close.side_effect = EnvironmentError(errno.EBADF, '') 195 mock_close.side_effect = EnvironmentError(errno.EBADF, '')
189 daemon.become_daemon() 196 daemon.become_daemon()
190 197
191 def testOpensDevNull(self, _mock_exit, _mock_chdir, mock_dup2, mock_open, 198 def testOpensDevNull(self, _mock_exit, _mock_chdir, mock_dup2, mock_open,
192 _mock_close, _mock_setsid, _mock_fork): 199 _mock_close, _mock_setsid, _mock_fork):
193 handle = object() 200 handle = object()
194 mock_open.return_value = handle 201 mock_open.return_value = handle
195 202
196 daemon.become_daemon() 203 daemon.become_daemon()
197 204
198 self.assertEqual([ 205 self.assertEqual([
199 ((handle, 0),), 206 ((handle, 0),),
200 ((handle, 1),), 207 ((handle, 1),),
201 ((handle, 2),), 208 ((handle, 2),),
202 ], mock_dup2.call_args_list) 209 ], mock_dup2.call_args_list)
203 210
211 def testOpensDevNullWithExceptions(self, _mock_exit, _mock_chdir, mock_dup2,
212 mock_open, _mock_close, _mock_setsid,
213 _mock_fork):
214 handle = object()
215 mock_open.return_value = handle
216
217 daemon.become_daemon(keep_fds={1})
218
219 self.assertEqual([
220 ((handle, 0),),
221 ((handle, 2),),
222 ], mock_dup2.call_args_list)
223
204 def testChangesToRoot(self, _mock_exit, mock_chdir, _mock_dup2, _mock_open, 224 def testChangesToRoot(self, _mock_exit, mock_chdir, _mock_dup2, _mock_open,
205 _mock_close, _mock_setsid, _mock_fork): 225 _mock_close, _mock_setsid, _mock_fork):
206 daemon.become_daemon() 226 daemon.become_daemon()
207 mock_chdir.assert_called_with('/') 227 mock_chdir.assert_called_with('/')
208 228
209 def testForkExitsParent(self, mock_exit, _mock_chdir, _mock_dup2, _mock_open, 229 def testForkExitsParent(self, mock_exit, _mock_chdir, _mock_dup2, _mock_open,
210 _mock_close, _mock_setsid, mock_fork): 230 _mock_close, _mock_setsid, mock_fork):
211 mock_fork.return_value = 0 231 mock_fork.return_value = 0
212 daemon.become_daemon() 232 daemon.become_daemon()
213 self.assertFalse(mock_exit.called) 233 self.assertFalse(mock_exit.called)
214 234
215 mock_fork.return_value = 123 235 mock_fork.return_value = 123
216 daemon.become_daemon() 236 daemon.become_daemon()
217 self.assertTrue(mock_exit.called) 237 self.assertTrue(mock_exit.called)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698