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

Side by Side Diff: net/test/test_server_posix.cc

Issue 3812007: Support restriction the TLS cipher selection in test_server.py (Closed)
Patch Set: Rebase to trunk Created 10 years, 1 month 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
« no previous file with comments | « net/test/test_server.cc ('k') | net/test/test_server_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/test_server.h" 5 #include "net/test/test_server.h"
6 6
7 #include <poll.h> 7 #include <poll.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/command_line.h"
11 #include "base/file_util.h" 12 #include "base/file_util.h"
12 #include "base/logging.h" 13 #include "base/logging.h"
13 #include "base/process_util.h" 14 #include "base/process_util.h"
14 #include "base/string_number_conversions.h" 15 #include "base/string_number_conversions.h"
15 #include "base/string_util.h" 16 #include "base/string_util.h"
16 #include "base/test/test_timeouts.h" 17 #include "base/test/test_timeouts.h"
17 18
18 namespace { 19 namespace {
19 20
20 // Helper class used to detect and kill orphaned python test server processes. 21 // Helper class used to detect and kill orphaned python test server processes.
(...skipping 27 matching lines...) Expand all
48 49
49 private: 50 private:
50 std::string path_string_; 51 std::string path_string_;
51 std::string port_string_; 52 std::string port_string_;
52 DISALLOW_COPY_AND_ASSIGN(OrphanedTestServerFilter); 53 DISALLOW_COPY_AND_ASSIGN(OrphanedTestServerFilter);
53 }; 54 };
54 55
55 } // namespace 56 } // namespace
56 57
57 namespace net { 58 namespace net {
59
58 bool TestServer::LaunchPython(const FilePath& testserver_path) { 60 bool TestServer::LaunchPython(const FilePath& testserver_path) {
59 std::vector<std::string> command_line; 61 CommandLine python_command(FilePath(FILE_PATH_LITERAL("python")));
60 command_line.push_back("python"); 62 python_command.AppendArgPath(testserver_path);
61 command_line.push_back(testserver_path.value()); 63 if (!AddCommandLineArguments(&python_command))
62 command_line.push_back("--port=" + base::IntToString(host_port_pair_.port())); 64 return false;
63 command_line.push_back("--data-dir=" + document_root_.value());
64
65 if (type_ == TYPE_FTP)
66 command_line.push_back("-f");
67
68 FilePath certificate_path(GetCertificatePath());
69 if (!certificate_path.value().empty()) {
70 if (!file_util::PathExists(certificate_path)) {
71 LOG(ERROR) << "Certificate path " << certificate_path.value()
72 << " doesn't exist. Can't launch https server.";
73 return false;
74 }
75 command_line.push_back("--https=" + certificate_path.value());
76 }
77
78 if (type_ == TYPE_HTTPS_CLIENT_AUTH)
79 command_line.push_back("--ssl-client-auth");
80 65
81 int pipefd[2]; 66 int pipefd[2];
82 if (pipe(pipefd) != 0) { 67 if (pipe(pipefd) != 0) {
83 PLOG(ERROR) << "Could not create pipe."; 68 PLOG(ERROR) << "Could not create pipe.";
84 return false; 69 return false;
85 } 70 }
86 71
87 // Save the read half. The write half is sent to the child. 72 // Save the read half. The write half is sent to the child.
88 child_fd_ = pipefd[0]; 73 child_fd_ = pipefd[0];
89 child_fd_closer_.reset(&child_fd_); 74 child_fd_closer_.reset(&child_fd_);
90 file_util::ScopedFD write_closer(&pipefd[1]); 75 file_util::ScopedFD write_closer(&pipefd[1]);
91 base::file_handle_mapping_vector map_write_fd; 76 base::file_handle_mapping_vector map_write_fd;
92 map_write_fd.push_back(std::make_pair(pipefd[1], pipefd[1])); 77 map_write_fd.push_back(std::make_pair(pipefd[1], pipefd[1]));
93 78
94 command_line.push_back("--startup-pipe=" + base::IntToString(pipefd[1])); 79 python_command.AppendSwitchASCII("startup-pipe",
80 base::IntToString(pipefd[1]));
95 81
96 // Try to kill any orphaned testserver processes that may be running. 82 // Try to kill any orphaned testserver processes that may be running.
97 OrphanedTestServerFilter filter(testserver_path.value(), 83 OrphanedTestServerFilter filter(testserver_path.value(),
98 base::IntToString(host_port_pair_.port())); 84 base::IntToString(host_port_pair_.port()));
99 if (!base::KillProcesses(L"python", -1, &filter)) { 85 if (!base::KillProcesses(L"python", -1, &filter)) {
100 LOG(WARNING) << "Failed to clean up older orphaned testserver instances."; 86 LOG(WARNING) << "Failed to clean up older orphaned testserver instances.";
101 } 87 }
102 88
103 // Launch a new testserver process. 89 // Launch a new testserver process.
104 if (!base::LaunchApp(command_line, map_write_fd, false, &process_handle_)) { 90 if (!base::LaunchApp(python_command.argv(), map_write_fd, false,
105 LOG(ERROR) << "Failed to launch " << command_line[0] << " ..."; 91 &process_handle_)) {
92 LOG(ERROR) << "Failed to launch " << python_command.command_line_string()
93 << " ...";
106 return false; 94 return false;
107 } 95 }
108 96
109 return true; 97 return true;
110 } 98 }
111 99
112 bool TestServer::WaitToStart() { 100 bool TestServer::WaitToStart() {
113 struct pollfd poll_fds[1]; 101 struct pollfd poll_fds[1];
114 102
115 poll_fds[0].fd = child_fd_; 103 poll_fds[0].fd = child_fd_;
(...skipping 12 matching lines...) Expand all
128 // We don't need the FD anymore. 116 // We don't need the FD anymore.
129 child_fd_closer_.reset(NULL); 117 child_fd_closer_.reset(NULL);
130 return n > 0; 118 return n > 0;
131 } 119 }
132 120
133 bool TestServer::CheckCATrusted() { 121 bool TestServer::CheckCATrusted() {
134 return true; 122 return true;
135 } 123 }
136 124
137 } // namespace net 125 } // namespace net
OLDNEW
« no previous file with comments | « net/test/test_server.cc ('k') | net/test/test_server_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698