Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import os | 6 import os |
| 7 import Queue | 7 import Queue |
| 8 import sys | 8 import sys |
| 9 import subprocess | 9 import subprocess |
| 10 import threading | 10 import threading |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 40 if self.process and self.process.returncode is None: | 40 if self.process and self.process.returncode is None: |
| 41 self.process.kill() | 41 self.process.kill() |
| 42 | 42 |
| 43 @staticmethod | 43 @staticmethod |
| 44 def _SubprocessThread(process, queue): | 44 def _SubprocessThread(process, queue): |
| 45 stdout, stderr = process.communicate() | 45 stdout, stderr = process.communicate() |
| 46 queue.put((process.returncode, stdout, stderr)) | 46 queue.put((process.returncode, stdout, stderr)) |
| 47 | 47 |
| 48 def _Run(self, args=None, timeout=None): | 48 def _Run(self, args=None, timeout=None): |
| 49 args = args or [] | 49 args = args or [] |
| 50 run_py = os.path.join(PARENT_DIR, 'run.py') | 50 cmd = [sys.executable, os.path.join(PARENT_DIR, 'run.py')] |
|
binji
2014/11/13 23:57:05
seems unrelated
Sam Clegg
2014/11/30 17:55:14
Done.
| |
| 51 cmd = [sys.executable, run_py] | |
| 52 cmd.extend(args) | 51 cmd.extend(args) |
| 53 self.process = subprocess.Popen(cmd, stdout=subprocess.PIPE, | 52 self.process = subprocess.Popen(cmd, stdout=subprocess.PIPE, |
| 54 stderr=subprocess.PIPE) | 53 stderr=subprocess.PIPE) |
| 55 queue = Queue.Queue() | 54 queue = Queue.Queue() |
| 56 thread = threading.Thread(target=RunTest._SubprocessThread, | 55 thread = threading.Thread(target=RunTest._SubprocessThread, |
| 57 args=(self.process, queue)) | 56 args=(self.process, queue)) |
| 58 thread.daemon = True | 57 thread.daemon = True |
| 59 thread.start() | 58 thread.start() |
| 60 thread.join(timeout) | 59 thread.join(timeout) |
| 61 if not thread.is_alive(): | 60 if not thread.is_alive(): |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 74 if http_request_type: | 73 if http_request_type: |
| 75 args.append('--' + http_request_type) | 74 args.append('--' + http_request_type) |
| 76 if sleep: | 75 if sleep: |
| 77 args.extend(['--sleep', str(sleep)]) | 76 args.extend(['--sleep', str(sleep)]) |
| 78 if expect_to_be_killed: | 77 if expect_to_be_killed: |
| 79 args.append('--expect-to-be-killed') | 78 args.append('--expect-to-be-killed') |
| 80 return args | 79 return args |
| 81 | 80 |
| 82 def testQuit(self): | 81 def testQuit(self): |
| 83 args = self._GetChromeMockArgs('?quit=1', 'get', sleep=10) | 82 args = self._GetChromeMockArgs('?quit=1', 'get', sleep=10) |
| 84 _, stdout, _ = self._Run(args, timeout=20) | 83 rtn, stdout, _ = self._Run(args, timeout=20) |
| 85 self.assertTrue('Starting' in stdout) | 84 self.assertEqual(rtn, 0) |
| 86 self.assertTrue('Expected to be killed' not in stdout) | 85 self.assertIn('Starting', stdout) |
| 86 self.assertNotIn('Expected to be killed', stdout) | |
| 87 | 87 |
| 88 def testSubprocessDies(self): | 88 def testSubprocessDies(self): |
| 89 args = self._GetChromeMockArgs(page=None, http_request_type=None, sleep=0, | 89 args = self._GetChromeMockArgs(page=None, http_request_type=None, sleep=0, |
| 90 expect_to_be_killed=False) | 90 expect_to_be_killed=False) |
| 91 returncode, stdout, _ = self._Run(args, timeout=10) | 91 returncode, stdout, _ = self._Run(args, timeout=10) |
| 92 self.assertNotEqual(-1, returncode) | 92 self.assertNotEqual(-1, returncode) |
| 93 self.assertTrue('Starting' in stdout) | 93 self.assertIn('Starting', stdout) |
| 94 | 94 |
| 95 | 95 |
| 96 if __name__ == '__main__': | 96 if __name__ == '__main__': |
| 97 unittest.main() | 97 unittest.main() |
| OLD | NEW |