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 |