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

Side by Side Diff: net/test/spawned_test_server/local_test_server_posix.cc

Issue 2950153002: Improve process launch handle sharing API. (Closed)
Patch Set: Fix Mojo launcher, review comments Created 3 years, 5 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/test/spawned_test_server/local_test_server.h" 5 #include "net/test/spawned_test_server/local_test_server.h"
6 6
7 #include <poll.h> 7 #include <poll.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 119
120 int pipefd[2]; 120 int pipefd[2];
121 if (pipe(pipefd) != 0) { 121 if (pipe(pipefd) != 0) {
122 PLOG(ERROR) << "Could not create pipe."; 122 PLOG(ERROR) << "Could not create pipe.";
123 return false; 123 return false;
124 } 124 }
125 125
126 // Save the read half. The write half is sent to the child. 126 // Save the read half. The write half is sent to the child.
127 child_fd_.reset(pipefd[0]); 127 child_fd_.reset(pipefd[0]);
128 base::ScopedFD write_closer(pipefd[1]); 128 base::ScopedFD write_closer(pipefd[1]);
129 base::FileHandleMappingVector map_write_fd;
130 map_write_fd.push_back(std::make_pair(pipefd[1], pipefd[1]));
131 129
132 python_command.AppendArg("--startup-pipe=" + base::IntToString(pipefd[1])); 130 python_command.AppendArg("--startup-pipe=" + base::IntToString(pipefd[1]));
133 131
134 // Try to kill any orphaned testserver processes that may be running. 132 // Try to kill any orphaned testserver processes that may be running.
135 OrphanedTestServerFilter filter(testserver_path.value(), 133 OrphanedTestServerFilter filter(testserver_path.value(),
136 base::UintToString(GetPort())); 134 base::UintToString(GetPort()));
137 if (!base::KillProcesses("python", -1, &filter)) { 135 if (!base::KillProcesses("python", -1, &filter)) {
138 LOG(WARNING) << "Failed to clean up older orphaned testserver instances."; 136 LOG(WARNING) << "Failed to clean up older orphaned testserver instances.";
139 } 137 }
140 138
141 // Launch a new testserver process. 139 // Launch a new testserver process.
142 base::LaunchOptions options; 140 base::LaunchOptions options;
143 141 options.fds_to_remap.push_back(std::make_pair(pipefd[1], pipefd[1]));
144 options.fds_to_remap = &map_write_fd;
145 process_ = base::LaunchProcess(python_command, options); 142 process_ = base::LaunchProcess(python_command, options);
146 if (!process_.IsValid()) { 143 if (!process_.IsValid()) {
147 LOG(ERROR) << "Failed to launch " << python_command.GetCommandLineString(); 144 LOG(ERROR) << "Failed to launch " << python_command.GetCommandLineString();
148 return false; 145 return false;
149 } 146 }
150 147
151 return true; 148 return true;
152 } 149 }
153 150
154 bool LocalTestServer::WaitToStart() { 151 bool LocalTestServer::WaitToStart() {
(...skipping 18 matching lines...) Expand all
173 170
174 if (!ParseServerData(server_data)) { 171 if (!ParseServerData(server_data)) {
175 LOG(ERROR) << "Could not parse server_data: " << server_data; 172 LOG(ERROR) << "Could not parse server_data: " << server_data;
176 return false; 173 return false;
177 } 174 }
178 175
179 return true; 176 return true;
180 } 177 }
181 178
182 } // namespace net 179 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698