Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(891)

Side by Side Diff: Tools/Scripts/webkitpy/layout_tests/servers/crash_service.py

Issue 159723008: Refactor webkitpy.layout_tests.servers.server_base. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright (C) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
(...skipping 27 matching lines...) Expand all
38 _log = logging.getLogger(__name__) 38 _log = logging.getLogger(__name__)
39 39
40 40
41 class CrashService(server_base.ServerBase): 41 class CrashService(server_base.ServerBase):
42 42
43 def __init__(self, port_obj, crash_dumps_dir): 43 def __init__(self, port_obj, crash_dumps_dir):
44 """Args: 44 """Args:
45 crash_dumps_dir: the absolute path to the directory where to store cra sh dumps 45 crash_dumps_dir: the absolute path to the directory where to store cra sh dumps
46 """ 46 """
47 # Webkit tests 47 # Webkit tests
48 super(CrashService, self).__init__(port_obj) 48 super(CrashService, self).__init__(port_obj, port_obj.default_results_di rectory())
49 self._name = 'CrashService' 49 self._name = 'CrashService'
50 self._crash_dumps_dir = crash_dumps_dir 50 self._crash_dumps_dir = crash_dumps_dir
51 51
52 self._pid_file = self._filesystem.join(self._runtime_path, '%s.pid' % se lf._name) 52 self._pid_file = self._filesystem.join(self._runtime_path, '%s.pid' % se lf._name)
53 53 self._start_cmd = [self._port_obj._path_to_crash_service(),
54 def _spawn_process(self): 54 '--dumps-dir=%s' % self._crash_dumps_dir,
55 start_cmd = [self._port_obj._path_to_crash_service(), 55 '--no-window']
56 '--dumps-dir=%s' % self._crash_dumps_dir,
57 '--no-window']
58 _log.debug('Starting crash service, cmd = "%s"' % " ".join(start_cmd))
59 process = self._executive.popen(start_cmd, shell=False, stderr=self._exe cutive.PIPE)
60 pid = process.pid
61 self._filesystem.write_text_file(self._pid_file, str(pid))
62 return pid
63
64 def _stop_running_server(self):
65 # FIXME: It would be nice if we had a cleaner way of killing this proces s.
66 # Currently we throw away the process object created in _spawn_process,
67 # since there doesn't appear to be any way to kill the server any more
68 # cleanly using it than just killing the pid, and we need to support
69 # killing a pid directly anyway for run-webkit-httpd and run-webkit-webs ocketserver.
70 self._wait_for_action(self._check_and_kill)
71 if self._filesystem.exists(self._pid_file):
72 self._filesystem.remove(self._pid_file)
73
74 def _check_and_kill(self):
75 if self._executive.check_running_pid(self._pid):
76 host = self._port_obj.host
77 if host.platform.is_win() and not host.platform.is_cygwin():
78 # FIXME: https://bugs.webkit.org/show_bug.cgi?id=106838
79 # We need to kill all of the child processes as well as the
80 # parent, so we can't use executive.kill_process().
81 #
82 # If this is actually working, we should figure out a clean API.
83 self._executive.run_command(["taskkill.exe", "/f", "/t", "/pid", self._pid], error_handler=self._executive.ignore_error)
84 else:
85 self._executive.kill_process(self._pid)
86 return False
87 return True
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698