| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/eintr_wrapper.h" | 10 #include "base/eintr_wrapper.h" |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 | 243 |
| 244 return 0; | 244 return 0; |
| 245 } | 245 } |
| 246 | 246 |
| 247 int ProcessUtilTest::CountOpenFDsInChild() { | 247 int ProcessUtilTest::CountOpenFDsInChild() { |
| 248 int fds[2]; | 248 int fds[2]; |
| 249 if (pipe(fds) < 0) | 249 if (pipe(fds) < 0) |
| 250 NOTREACHED(); | 250 NOTREACHED(); |
| 251 | 251 |
| 252 file_handle_mapping_vector fd_mapping_vec; | 252 file_handle_mapping_vector fd_mapping_vec; |
| 253 fd_mapping_vec.push_back(std::pair<int,int>(fds[1], kChildPipe)); | 253 fd_mapping_vec.push_back(std::pair<int, int>(fds[1], kChildPipe)); |
| 254 ProcessHandle handle = this->SpawnChild(L"ProcessUtilsLeakFDChildProcess", | 254 ProcessHandle handle = this->SpawnChild(L"ProcessUtilsLeakFDChildProcess", |
| 255 fd_mapping_vec, | 255 fd_mapping_vec, |
| 256 false); | 256 false); |
| 257 CHECK(handle); | 257 CHECK(handle); |
| 258 int ret = HANDLE_EINTR(close(fds[1])); | 258 int ret = HANDLE_EINTR(close(fds[1])); |
| 259 DPCHECK(ret == 0); | 259 DPCHECK(ret == 0); |
| 260 | 260 |
| 261 // Read number of open files in client process from pipe; | 261 // Read number of open files in client process from pipe; |
| 262 int num_open_files = -1; | 262 int num_open_files = -1; |
| 263 ssize_t bytes_read = | 263 ssize_t bytes_read = |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 | 401 |
| 402 EXPECT_EQ(0, ParseProcStatCPU(kSelfStat)); | 402 EXPECT_EQ(0, ParseProcStatCPU(kSelfStat)); |
| 403 } | 403 } |
| 404 #endif | 404 #endif |
| 405 | 405 |
| 406 #endif // defined(OS_POSIX) | 406 #endif // defined(OS_POSIX) |
| 407 | 407 |
| 408 // TODO(vandebo) make this work on Windows and Mac too. | 408 // TODO(vandebo) make this work on Windows and Mac too. |
| 409 #if defined(OS_LINUX) | 409 #if defined(OS_LINUX) |
| 410 | 410 |
| 411 #if defined(LINUX_USE_TCMALLOC) | 411 #if defined(USE_TCMALLOC) |
| 412 extern "C" { | 412 extern "C" { |
| 413 int tc_set_new_mode(int mode); | 413 int tc_set_new_mode(int mode); |
| 414 } | 414 } |
| 415 #endif // defined(LINUX_USE_TCMALLOC) | 415 #endif // defined(USE_TCMALLOC) |
| 416 | 416 |
| 417 class OutOfMemoryTest : public testing::Test { | 417 class OutOfMemoryTest : public testing::Test { |
| 418 public: | 418 public: |
| 419 OutOfMemoryTest() | 419 OutOfMemoryTest() |
| 420 : value_(NULL), | 420 : value_(NULL), |
| 421 // Make test size as large as possible minus a few pages so | 421 // Make test size as large as possible minus a few pages so |
| 422 // that alignment or other rounding doesn't make it wrap. | 422 // that alignment or other rounding doesn't make it wrap. |
| 423 test_size_(std::numeric_limits<std::size_t>::max() - 8192) { | 423 test_size_(std::numeric_limits<std::size_t>::max() - 8192) { |
| 424 } | 424 } |
| 425 | 425 |
| 426 virtual void SetUp() { | 426 virtual void SetUp() { |
| 427 // Must call EnableTerminationOnOutOfMemory() because that is called from | 427 // Must call EnableTerminationOnOutOfMemory() because that is called from |
| 428 // chrome's main function and therefore hasn't been called yet. | 428 // chrome's main function and therefore hasn't been called yet. |
| 429 EnableTerminationOnOutOfMemory(); | 429 EnableTerminationOnOutOfMemory(); |
| 430 #if defined(LINUX_USE_TCMALLOC) | 430 #if defined(USE_TCMALLOC) |
| 431 tc_set_new_mode(1); | 431 tc_set_new_mode(1); |
| 432 } | 432 } |
| 433 | 433 |
| 434 virtual void TearDown() { | 434 virtual void TearDown() { |
| 435 tc_set_new_mode(0); | 435 tc_set_new_mode(0); |
| 436 #endif // defined(LINUX_USE_TCMALLOC) | 436 #endif // defined(USE_TCMALLOC) |
| 437 } | 437 } |
| 438 | 438 |
| 439 void* value_; | 439 void* value_; |
| 440 size_t test_size_; | 440 size_t test_size_; |
| 441 }; | 441 }; |
| 442 | 442 |
| 443 TEST_F(OutOfMemoryTest, New) { | 443 TEST_F(OutOfMemoryTest, New) { |
| 444 ASSERT_DEATH(value_ = new char[test_size_], ""); | 444 ASSERT_DEATH(value_ = new char[test_size_], ""); |
| 445 } | 445 } |
| 446 | 446 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 481 TEST_F(OutOfMemoryTest, Posix_memalign) { | 481 TEST_F(OutOfMemoryTest, Posix_memalign) { |
| 482 // Grab the return value of posix_memalign to silence a compiler warning | 482 // Grab the return value of posix_memalign to silence a compiler warning |
| 483 // about unused return values. We don't actually care about the return | 483 // about unused return values. We don't actually care about the return |
| 484 // value, since we're asserting death. | 484 // value, since we're asserting death. |
| 485 ASSERT_DEATH(EXPECT_EQ(ENOMEM, posix_memalign(&value_, 8, test_size_)), ""); | 485 ASSERT_DEATH(EXPECT_EQ(ENOMEM, posix_memalign(&value_, 8, test_size_)), ""); |
| 486 } | 486 } |
| 487 | 487 |
| 488 #endif // defined(OS_LINUX) | 488 #endif // defined(OS_LINUX) |
| 489 | 489 |
| 490 } // namespace base | 490 } // namespace base |
| OLD | NEW |