| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/process/process_metrics.h" | 5 #include "base/process/process_metrics.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <sstream> | 10 #include <sstream> |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 } | 296 } |
| 297 #endif // defined(OS_LINUX) || defined(OS_ANDROID) | 297 #endif // defined(OS_LINUX) || defined(OS_ANDROID) |
| 298 | 298 |
| 299 #if defined(OS_LINUX) || defined(OS_CHROMEOS) | 299 #if defined(OS_LINUX) || defined(OS_CHROMEOS) |
| 300 | 300 |
| 301 // Test that ProcessMetrics::GetCPUUsage() doesn't return negative values when | 301 // Test that ProcessMetrics::GetCPUUsage() doesn't return negative values when |
| 302 // the number of threads running on the process decreases between two successive | 302 // the number of threads running on the process decreases between two successive |
| 303 // calls to it. | 303 // calls to it. |
| 304 TEST_F(SystemMetricsTest, TestNoNegativeCpuUsage) { | 304 TEST_F(SystemMetricsTest, TestNoNegativeCpuUsage) { |
| 305 ProcessHandle handle = GetCurrentProcessHandle(); | 305 ProcessHandle handle = GetCurrentProcessHandle(); |
| 306 scoped_ptr<ProcessMetrics> metrics( | 306 std::unique_ptr<ProcessMetrics> metrics( |
| 307 ProcessMetrics::CreateProcessMetrics(handle)); | 307 ProcessMetrics::CreateProcessMetrics(handle)); |
| 308 | 308 |
| 309 EXPECT_GE(metrics->GetCPUUsage(), 0.0); | 309 EXPECT_GE(metrics->GetCPUUsage(), 0.0); |
| 310 Thread thread1("thread1"); | 310 Thread thread1("thread1"); |
| 311 Thread thread2("thread2"); | 311 Thread thread2("thread2"); |
| 312 Thread thread3("thread3"); | 312 Thread thread3("thread3"); |
| 313 | 313 |
| 314 thread1.StartAndWaitForTesting(); | 314 thread1.StartAndWaitForTesting(); |
| 315 thread2.StartAndWaitForTesting(); | 315 thread2.StartAndWaitForTesting(); |
| 316 thread3.StartAndWaitForTesting(); | 316 thread3.StartAndWaitForTesting(); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 // Disable on Android because base_unittests runs inside a Dalvik VM that | 417 // Disable on Android because base_unittests runs inside a Dalvik VM that |
| 418 // starts and stop threads (crbug.com/175563). | 418 // starts and stop threads (crbug.com/175563). |
| 419 #if defined(OS_LINUX) | 419 #if defined(OS_LINUX) |
| 420 // http://crbug.com/396455 | 420 // http://crbug.com/396455 |
| 421 TEST(ProcessMetricsTest, DISABLED_GetNumberOfThreads) { | 421 TEST(ProcessMetricsTest, DISABLED_GetNumberOfThreads) { |
| 422 const ProcessHandle current = GetCurrentProcessHandle(); | 422 const ProcessHandle current = GetCurrentProcessHandle(); |
| 423 const int initial_threads = GetNumberOfThreads(current); | 423 const int initial_threads = GetNumberOfThreads(current); |
| 424 ASSERT_GT(initial_threads, 0); | 424 ASSERT_GT(initial_threads, 0); |
| 425 const int kNumAdditionalThreads = 10; | 425 const int kNumAdditionalThreads = 10; |
| 426 { | 426 { |
| 427 scoped_ptr<Thread> my_threads[kNumAdditionalThreads]; | 427 std::unique_ptr<Thread> my_threads[kNumAdditionalThreads]; |
| 428 for (int i = 0; i < kNumAdditionalThreads; ++i) { | 428 for (int i = 0; i < kNumAdditionalThreads; ++i) { |
| 429 my_threads[i].reset(new Thread("GetNumberOfThreadsTest")); | 429 my_threads[i].reset(new Thread("GetNumberOfThreadsTest")); |
| 430 my_threads[i]->Start(); | 430 my_threads[i]->Start(); |
| 431 ASSERT_EQ(GetNumberOfThreads(current), initial_threads + 1 + i); | 431 ASSERT_EQ(GetNumberOfThreads(current), initial_threads + 1 + i); |
| 432 } | 432 } |
| 433 } | 433 } |
| 434 // The Thread destructor will stop them. | 434 // The Thread destructor will stop them. |
| 435 ASSERT_EQ(initial_threads, GetNumberOfThreads(current)); | 435 ASSERT_EQ(initial_threads, GetNumberOfThreads(current)); |
| 436 } | 436 } |
| 437 #endif // defined(OS_LINUX) | 437 #endif // defined(OS_LINUX) |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 ScopedTempDir temp_dir; | 489 ScopedTempDir temp_dir; |
| 490 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 490 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 491 const FilePath temp_path = temp_dir.path(); | 491 const FilePath temp_path = temp_dir.path(); |
| 492 CommandLine child_command_line(GetMultiProcessTestChildBaseCommandLine()); | 492 CommandLine child_command_line(GetMultiProcessTestChildBaseCommandLine()); |
| 493 child_command_line.AppendSwitchPath(kTempDirFlag, temp_path); | 493 child_command_line.AppendSwitchPath(kTempDirFlag, temp_path); |
| 494 Process child = SpawnMultiProcessTestChild( | 494 Process child = SpawnMultiProcessTestChild( |
| 495 ChildMainString, child_command_line, LaunchOptions()); | 495 ChildMainString, child_command_line, LaunchOptions()); |
| 496 ASSERT_TRUE(child.IsValid()); | 496 ASSERT_TRUE(child.IsValid()); |
| 497 WaitForEvent(temp_path, kSignalClosed); | 497 WaitForEvent(temp_path, kSignalClosed); |
| 498 | 498 |
| 499 scoped_ptr<ProcessMetrics> metrics( | 499 std::unique_ptr<ProcessMetrics> metrics( |
| 500 ProcessMetrics::CreateProcessMetrics(child.Handle())); | 500 ProcessMetrics::CreateProcessMetrics(child.Handle())); |
| 501 EXPECT_EQ(0, metrics->GetOpenFdCount()); | 501 EXPECT_EQ(0, metrics->GetOpenFdCount()); |
| 502 ASSERT_TRUE(child.Terminate(0, true)); | 502 ASSERT_TRUE(child.Terminate(0, true)); |
| 503 } | 503 } |
| 504 #endif // defined(OS_LINUX) | 504 #endif // defined(OS_LINUX) |
| 505 | 505 |
| 506 } // namespace debug | 506 } // namespace debug |
| 507 } // namespace base | 507 } // namespace base |
| OLD | NEW |