aboutsummaryrefslogtreecommitdiff
path: root/cros_utils/no_pseudo_terminal_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'cros_utils/no_pseudo_terminal_test.py')
-rwxr-xr-x[-rw-r--r--]cros_utils/no_pseudo_terminal_test.py20
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."""