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')
-rw-r--r--cros_utils/no_pseudo_terminal_test.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/cros_utils/no_pseudo_terminal_test.py b/cros_utils/no_pseudo_terminal_test.py
new file mode 100644
index 00000000..43eabb13
--- /dev/null
+++ b/cros_utils/no_pseudo_terminal_test.py
@@ -0,0 +1,53 @@
+"""Test to ensure we're not touching /dev/ptmx when running commands."""
+
+from __future__ import print_function
+
+import os
+import subprocess
+import tempfile
+import time
+import unittest
+from cros_utils import command_executer
+
+
+class NoPsuedoTerminalTest(unittest.TestCase):
+ """Test to ensure we're not touching /dev/ptmx when running commands."""
+
+ _strace_process = None
+ STRACE_TIMEOUT = 10
+
+ def _AttachStraceToSelf(self, output_file):
+ """Attaches strace to the current process."""
+ args = ['strace', '-o', output_file, '-p', str(os.getpid())]
+ print(args)
+ self._strace_process = subprocess.Popen(args)
+ # Wait until we see some activity.
+ start_time = time.time()
+ while time.time() - start_time < self.STRACE_TIMEOUT:
+ if os.path.isfile(output_file) and open(output_file).read(1):
+ return True
+ time.sleep(1)
+ return False
+
+ def _KillStraceProcess(self):
+ """Kills strace that was started by _AttachStraceToSelf()."""
+ self._strace_process.terminate()
+ self._strace_process.wait()
+ return True
+
+ def testNoPseudoTerminalWhenRunningCommand(self):
+ """Test to make sure we're not touching /dev/ptmx when running commands."""
+ temp_file = tempfile.mktemp()
+ self.assertTrue(self._AttachStraceToSelf(temp_file))
+
+ ce = command_executer.GetCommandExecuter()
+ ce.RunCommand('echo')
+
+ self.assertTrue(self._KillStraceProcess())
+
+ strace_contents = open(temp_file).read()
+ self.assertFalse('/dev/ptmx' in strace_contents)
+
+
+if __name__ == '__main__':
+ unittest.main()