Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / chrome / test / functional / test_clean_exit.py
1 #!/usr/bin/env python
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
4 # found in the LICENSE file.
5
6 import logging
7 import os
8 import signal
9 import subprocess
10 import tempfile
11 import unittest
12
13 import pyauto_functional
14 import pyauto
15 import test_utils
16
17
18 class SimpleTest(pyauto.PyUITest):
19
20   def ExtraChromeFlags(self):
21     """Ensures Chrome is launched with custom flags.
22
23     Returns:
24       A list of extra flags to pass to Chrome when it is launched.
25     """
26     fd, self._strace_log = tempfile.mkstemp()
27     os.close(fd)
28     extra_flags = ['--no-sandbox', '--child-clean-exit',
29                    '--renderer-cmd-prefix=/usr/bin/strace -o %s' %
30                     self._strace_log]
31     logging.debug('Strace file is: %s' % self._strace_log)
32     return pyauto.PyUITest.ExtraChromeFlags(self) + extra_flags
33
34
35   def testCleanExit(self):
36     """Ensures the renderer process cleanly exits."""
37     url = self.GetHttpURLForDataPath('title2.html')
38     self.NavigateToURL(url)
39     os.kill(self.GetBrowserInfo()['browser_pid'], signal.SIGINT)
40     self.WaitUntil(lambda: self._IsFileOpen(self._strace_log))
41     strace_contents = open(self._strace_log).read()
42     self.assertTrue('exit_group' in strace_contents)
43     os.remove(self._strace_log)
44
45   def _IsFileOpen(self, filename):
46     p = subprocess.Popen(['lsof', filename])
47     return p.communicate()[0] == ''
48
49
50 if __name__ == '__main__':
51   pyauto_functional.Main()