Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 #define _CRT_SECURE_NO_WARNINGS | 5 #define _CRT_SECURE_NO_WARNINGS |
| 6 | 6 |
| 7 #include "base/multiprocess_test.h" | 7 #include "base/multiprocess_test.h" |
| 8 #include "base/platform_thread.h" | 8 #include "base/platform_thread.h" |
| 9 #include "base/process_util.h" | 9 #include "base/process_util.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 174 } | 174 } |
| 175 | 175 |
| 176 // InitLogging always opens a file at startup. | 176 // InitLogging always opens a file at startup. |
| 177 int expected_num_open_fds = 1; | 177 int expected_num_open_fds = 1; |
| 178 #if defined(OS_LINUX) | 178 #if defined(OS_LINUX) |
| 179 // On Linux, '/etc/localtime' is opened before the test's main() enters. | 179 // On Linux, '/etc/localtime' is opened before the test's main() enters. |
| 180 expected_num_open_fds += 1; | 180 expected_num_open_fds += 1; |
| 181 #endif // defined(OS_LINUX) | 181 #endif // defined(OS_LINUX) |
| 182 num_open_files -= expected_num_open_fds; | 182 num_open_files -= expected_num_open_fds; |
| 183 | 183 |
| 184 write(write_pipe, &num_open_files, sizeof(num_open_files)); | 184 int written = write(write_pipe, &num_open_files, sizeof(num_open_files)); |
|
agl
2009/02/22 01:25:35
ssize_t, not int
| |
| 185 DCHECK(written == sizeof(num_open_files)); | |
|
agl
2009/02/22 01:25:35
DCHECK_EQ
| |
| 185 close(write_pipe); | 186 close(write_pipe); |
| 186 | 187 |
| 187 return 0; | 188 return 0; |
| 188 } | 189 } |
| 189 | 190 |
| 190 TEST_F(ProcessUtilTest, FDRemapping) { | 191 TEST_F(ProcessUtilTest, FDRemapping) { |
| 191 // Open some files to check they don't get leaked to the child process. | 192 // Open some files to check they don't get leaked to the child process. |
| 192 int fds[2]; | 193 int fds[2]; |
| 193 pipe(fds); | 194 if (pipe(fds) < 0) |
| 195 NOTREACHED(); | |
| 194 int pipe_read_fd = fds[0]; | 196 int pipe_read_fd = fds[0]; |
| 195 int pipe_write_fd = fds[1]; | 197 int pipe_write_fd = fds[1]; |
| 196 | 198 |
| 197 // open some dummy fds to make sure they don't propogate over to the | 199 // open some dummy fds to make sure they don't propogate over to the |
| 198 // child process. | 200 // child process. |
| 199 int dev_null = open("/dev/null", O_RDONLY); | 201 int dev_null = open("/dev/null", O_RDONLY); |
| 200 int sockets[2]; | 202 int sockets[2]; |
| 201 socketpair(AF_UNIX, SOCK_STREAM, 0, sockets); | 203 socketpair(AF_UNIX, SOCK_STREAM, 0, sockets); |
| 202 | 204 |
| 203 file_handle_mapping_vector fd_mapping_vec; | 205 file_handle_mapping_vector fd_mapping_vec; |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 221 base::CloseProcessHandle(handle); | 223 base::CloseProcessHandle(handle); |
| 222 close(fds[0]); | 224 close(fds[0]); |
| 223 close(sockets[0]); | 225 close(sockets[0]); |
| 224 close(sockets[1]); | 226 close(sockets[1]); |
| 225 close(dev_null); | 227 close(dev_null); |
| 226 } | 228 } |
| 227 | 229 |
| 228 #endif // defined(OS_POSIX) | 230 #endif // defined(OS_POSIX) |
| 229 | 231 |
| 230 } // namespace base | 232 } // namespace base |
| OLD | NEW |