diff options
Diffstat (limited to 'cros_utils/no_pseudo_terminal_test.py')
-rwxr-xr-x[-rw-r--r--] | cros_utils/no_pseudo_terminal_test.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/cros_utils/no_pseudo_terminal_test.py b/cros_utils/no_pseudo_terminal_test.py index 43eabb13..41d71539 100644..100755 --- a/cros_utils/no_pseudo_terminal_test.py +++ b/cros_utils/no_pseudo_terminal_test.py @@ -1,3 +1,10 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +# +# Copyright 2019 The Chromium OS Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + """Test to ensure we're not touching /dev/ptmx when running commands.""" from __future__ import print_function @@ -18,9 +25,9 @@ class NoPsuedoTerminalTest(unittest.TestCase): def _AttachStraceToSelf(self, output_file): """Attaches strace to the current process.""" - args = ['strace', '-o', output_file, '-p', str(os.getpid())] + args = ['sudo', 'strace', '-o', output_file, '-p', str(os.getpid())] print(args) - self._strace_process = subprocess.Popen(args) + self._strace_process = subprocess.Popen(args, preexec_fn=os.setpgrp) # Wait until we see some activity. start_time = time.time() while time.time() - start_time < self.STRACE_TIMEOUT: @@ -31,9 +38,12 @@ class NoPsuedoTerminalTest(unittest.TestCase): def _KillStraceProcess(self): """Kills strace that was started by _AttachStraceToSelf().""" - self._strace_process.terminate() - self._strace_process.wait() - return True + pgid = os.getpgid(self._strace_process.pid) + args = ['sudo', 'kill', str(pgid)] + if subprocess.call(args) == 0: + os.waitpid(pgid, 0) + return True + return False def testNoPseudoTerminalWhenRunningCommand(self): """Test to make sure we're not touching /dev/ptmx when running commands.""" |