| OLD | NEW | 
|     1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |     1 // Copyright (c) 2012 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 // Test of classes in the tracked_objects.h classes. |     5 // Test of classes in the tracked_objects.h classes. | 
|     6  |     6  | 
|     7 #include "base/tracked_objects.h" |     7 #include "base/tracked_objects.h" | 
|     8  |     8  | 
|     9 #include <stddef.h> |     9 #include <stddef.h> | 
|    10 #include <stdint.h> |    10 #include <stdint.h> | 
|    11  |    11  | 
|    12 #include <memory> |    12 #include <memory> | 
|    13  |    13  | 
 |    14 #include "base/debug/scoped_thread_heap_usage.h" | 
|    14 #include "base/process/process_handle.h" |    15 #include "base/process/process_handle.h" | 
|    15 #include "base/time/time.h" |    16 #include "base/time/time.h" | 
|    16 #include "base/tracking_info.h" |    17 #include "base/tracking_info.h" | 
|    17 #include "testing/gtest/include/gtest/gtest.h" |    18 #include "testing/gtest/include/gtest/gtest.h" | 
|    18  |    19  | 
|    19 const int kLineNumber = 1776; |    20 const int kLineNumber = 1776; | 
|    20 const char kFile[] = "FixedUnitTestFileName"; |    21 const char kFile[] = "FixedUnitTestFileName"; | 
|    21 const char kWorkerThreadName[] = "WorkerThread-1"; |    22 const char kWorkerThreadName[] = "WorkerThread-1"; | 
|    22 const char kMainThreadName[] = "SomeMainThreadName"; |    23 const char kMainThreadName[] = "SomeMainThreadName"; | 
|    23 const char kStillAlive[] = "Still_Alive"; |    24 const char kStillAlive[] = "Still_Alive"; | 
|    24  |    25  | 
 |    26 const uint32_t kAllocOps = 23; | 
 |    27 const uint32_t kFreeOps = 27; | 
 |    28 const uint32_t kAllocatedBytes = 59934; | 
 |    29 const uint32_t kFreedBytes = 2 * kAllocatedBytes; | 
 |    30 const uint32_t kAllocOverheadBytes = kAllocOps * 8; | 
 |    31 const uint32_t kMaxAllocatedBytes = kAllocatedBytes / 2; | 
 |    32  | 
|    25 namespace tracked_objects { |    33 namespace tracked_objects { | 
|    26  |    34  | 
|    27 class TrackedObjectsTest : public testing::Test { |    35 class TrackedObjectsTest : public testing::Test { | 
|    28  protected: |    36  protected: | 
|    29   TrackedObjectsTest() { |    37   TrackedObjectsTest() { | 
|    30     // On entry, leak any database structures in case they are still in use by |    38     // On entry, leak any database structures in case they are still in use by | 
|    31     // prior threads. |    39     // prior threads. | 
|    32     ThreadData::ShutdownSingleThreadedCleanup(true); |    40     ThreadData::ShutdownSingleThreadedCleanup(true); | 
|    33  |    41  | 
|    34     test_time_ = 0; |    42     test_time_ = 0; | 
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   230   EXPECT_EQ(time_elapsed, |   238   EXPECT_EQ(time_elapsed, | 
|   231             process_data_phase.tasks[0].death_data.run_duration_max); |   239             process_data_phase.tasks[0].death_data.run_duration_max); | 
|   232   EXPECT_EQ(time_elapsed, |   240   EXPECT_EQ(time_elapsed, | 
|   233             process_data_phase.tasks[0].death_data.run_duration_sample); |   241             process_data_phase.tasks[0].death_data.run_duration_sample); | 
|   234   EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sum); |   242   EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sum); | 
|   235   EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_max); |   243   EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_max); | 
|   236   EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sample); |   244   EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sample); | 
|   237   EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].death_thread_name); |   245   EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].death_thread_name); | 
|   238 } |   246 } | 
|   239  |   247  | 
|   240 TEST_F(TrackedObjectsTest, DeathDataTestRecordDeath) { |   248 TEST_F(TrackedObjectsTest, DeathDataTestRecordDurations) { | 
|   241   ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); |   249   ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); | 
|   242  |   250  | 
|   243   std::unique_ptr<DeathData> data(new DeathData()); |   251   std::unique_ptr<DeathData> data(new DeathData()); | 
|   244   ASSERT_NE(data, nullptr); |   252   ASSERT_NE(data, nullptr); | 
|   245   EXPECT_EQ(data->run_duration_sum(), 0); |   253   EXPECT_EQ(data->run_duration_sum(), 0); | 
|   246   EXPECT_EQ(data->run_duration_max(), 0); |   254   EXPECT_EQ(data->run_duration_max(), 0); | 
|   247   EXPECT_EQ(data->run_duration_sample(), 0); |   255   EXPECT_EQ(data->run_duration_sample(), 0); | 
|   248   EXPECT_EQ(data->queue_duration_sum(), 0); |   256   EXPECT_EQ(data->queue_duration_sum(), 0); | 
|   249   EXPECT_EQ(data->queue_duration_max(), 0); |   257   EXPECT_EQ(data->queue_duration_max(), 0); | 
|   250   EXPECT_EQ(data->queue_duration_sample(), 0); |   258   EXPECT_EQ(data->queue_duration_sample(), 0); | 
|   251   EXPECT_EQ(data->count(), 0); |   259   EXPECT_EQ(data->count(), 0); | 
|   252   EXPECT_EQ(nullptr, data->last_phase_snapshot()); |   260   EXPECT_EQ(nullptr, data->last_phase_snapshot()); | 
|   253  |   261  | 
|   254   int32_t run_ms = 42; |   262   int32_t run_ms = 42; | 
|   255   int32_t queue_ms = 8; |   263   int32_t queue_ms = 8; | 
|   256  |   264  | 
|   257   const int kUnrandomInt = 0;  // Fake random int that ensure we sample data. |   265   const int kUnrandomInt = 0;  // Fake random int that ensure we sample data. | 
|   258   data->RecordDeath(queue_ms, run_ms, kUnrandomInt); |   266   data->RecordDurations(queue_ms, run_ms, kUnrandomInt); | 
|   259   EXPECT_EQ(data->run_duration_sum(), run_ms); |   267   EXPECT_EQ(data->run_duration_sum(), run_ms); | 
|   260   EXPECT_EQ(data->run_duration_max(), run_ms); |   268   EXPECT_EQ(data->run_duration_max(), run_ms); | 
|   261   EXPECT_EQ(data->run_duration_sample(), run_ms); |   269   EXPECT_EQ(data->run_duration_sample(), run_ms); | 
|   262   EXPECT_EQ(data->queue_duration_sum(), queue_ms); |   270   EXPECT_EQ(data->queue_duration_sum(), queue_ms); | 
|   263   EXPECT_EQ(data->queue_duration_max(), queue_ms); |   271   EXPECT_EQ(data->queue_duration_max(), queue_ms); | 
|   264   EXPECT_EQ(data->queue_duration_sample(), queue_ms); |   272   EXPECT_EQ(data->queue_duration_sample(), queue_ms); | 
|   265   EXPECT_EQ(data->count(), 1); |   273   EXPECT_EQ(data->count(), 1); | 
|   266   EXPECT_EQ(nullptr, data->last_phase_snapshot()); |   274   EXPECT_EQ(nullptr, data->last_phase_snapshot()); | 
|   267  |   275  | 
|   268   data->RecordDeath(queue_ms, run_ms, kUnrandomInt); |   276   data->RecordDurations(queue_ms, run_ms, kUnrandomInt); | 
|   269   EXPECT_EQ(data->run_duration_sum(), run_ms + run_ms); |   277   EXPECT_EQ(data->run_duration_sum(), run_ms + run_ms); | 
|   270   EXPECT_EQ(data->run_duration_max(), run_ms); |   278   EXPECT_EQ(data->run_duration_max(), run_ms); | 
|   271   EXPECT_EQ(data->run_duration_sample(), run_ms); |   279   EXPECT_EQ(data->run_duration_sample(), run_ms); | 
|   272   EXPECT_EQ(data->queue_duration_sum(), queue_ms + queue_ms); |   280   EXPECT_EQ(data->queue_duration_sum(), queue_ms + queue_ms); | 
|   273   EXPECT_EQ(data->queue_duration_max(), queue_ms); |   281   EXPECT_EQ(data->queue_duration_max(), queue_ms); | 
|   274   EXPECT_EQ(data->queue_duration_sample(), queue_ms); |   282   EXPECT_EQ(data->queue_duration_sample(), queue_ms); | 
|   275   EXPECT_EQ(data->count(), 2); |   283   EXPECT_EQ(data->count(), 2); | 
|   276   EXPECT_EQ(nullptr, data->last_phase_snapshot()); |   284   EXPECT_EQ(nullptr, data->last_phase_snapshot()); | 
|   277 } |   285 } | 
|   278  |   286  | 
 |   287 TEST_F(TrackedObjectsTest, DeathDataTestRecordAllocations) { | 
 |   288   ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); | 
 |   289  | 
 |   290   std::unique_ptr<DeathData> data(new DeathData()); | 
 |   291   ASSERT_NE(data, nullptr); | 
 |   292  | 
 |   293   EXPECT_EQ(data->alloc_ops(), 0); | 
 |   294   EXPECT_EQ(data->free_ops(), 0); | 
 |   295   EXPECT_EQ(data->allocated_bytes(), 0); | 
 |   296   EXPECT_EQ(data->freed_bytes(), 0); | 
 |   297   EXPECT_EQ(data->alloc_overhead_bytes(), 0); | 
 |   298   EXPECT_EQ(data->max_allocated_bytes(), 0); | 
 |   299  | 
 |   300   EXPECT_EQ(nullptr, data->last_phase_snapshot()); | 
 |   301  | 
 |   302   data->RecordAllocations(kAllocOps, kFreeOps, kAllocatedBytes, kFreedBytes, | 
 |   303                           kAllocOverheadBytes, kMaxAllocatedBytes); | 
 |   304   EXPECT_EQ(data->alloc_ops(), kAllocOps); | 
 |   305   EXPECT_EQ(data->free_ops(), kFreeOps); | 
 |   306   EXPECT_EQ(data->allocated_bytes(), kAllocatedBytes); | 
 |   307   EXPECT_EQ(data->freed_bytes(), kFreedBytes); | 
 |   308   EXPECT_EQ(data->alloc_overhead_bytes(), kAllocOverheadBytes); | 
 |   309   EXPECT_EQ(data->max_allocated_bytes(), kMaxAllocatedBytes); | 
 |   310  | 
 |   311   // Record another batch, with a smaller max. | 
 |   312   const uint32_t kSmallerMaxAllocatedBytes = kMaxAllocatedBytes / 2; | 
 |   313   data->RecordAllocations(kAllocOps, kFreeOps, kAllocatedBytes, kFreedBytes, | 
 |   314                           kAllocOverheadBytes, kSmallerMaxAllocatedBytes); | 
 |   315   EXPECT_EQ(data->alloc_ops(), 2 * kAllocOps); | 
 |   316   EXPECT_EQ(data->free_ops(), 2 * kFreeOps); | 
 |   317   EXPECT_EQ(data->allocated_bytes(), 2 * kAllocatedBytes); | 
 |   318   EXPECT_EQ(data->freed_bytes(), 2 * kFreedBytes); | 
 |   319   EXPECT_EQ(data->alloc_overhead_bytes(), 2 * kAllocOverheadBytes); | 
 |   320   EXPECT_EQ(data->max_allocated_bytes(), kMaxAllocatedBytes); | 
 |   321  | 
 |   322   // Now with a larger max. | 
 |   323   const uint32_t kLargerMaxAllocatedBytes = kMaxAllocatedBytes * 2; | 
 |   324   data->RecordAllocations(kAllocOps, kFreeOps, kAllocatedBytes, kFreedBytes, | 
 |   325                           kAllocOverheadBytes, kLargerMaxAllocatedBytes); | 
 |   326   EXPECT_EQ(data->alloc_ops(), 3 * kAllocOps); | 
 |   327   EXPECT_EQ(data->free_ops(), 3 * kFreeOps); | 
 |   328   EXPECT_EQ(data->allocated_bytes(), 3 * kAllocatedBytes); | 
 |   329   EXPECT_EQ(data->freed_bytes(), 3 * kFreedBytes); | 
 |   330   EXPECT_EQ(data->alloc_overhead_bytes(), 3 * kAllocOverheadBytes); | 
 |   331   EXPECT_EQ(data->max_allocated_bytes(), kLargerMaxAllocatedBytes); | 
 |   332  | 
 |   333   // Saturate everything. | 
 |   334   data->RecordAllocations(INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX); | 
 |   335   EXPECT_EQ(data->alloc_ops(), INT_MAX); | 
 |   336   EXPECT_EQ(data->free_ops(), INT_MAX); | 
 |   337   EXPECT_EQ(data->allocated_bytes(), INT_MAX); | 
 |   338   EXPECT_EQ(data->freed_bytes(), INT_MAX); | 
 |   339   EXPECT_EQ(data->alloc_overhead_bytes(), INT_MAX); | 
 |   340   EXPECT_EQ(data->max_allocated_bytes(), INT_MAX); | 
 |   341 } | 
 |   342  | 
|   279 TEST_F(TrackedObjectsTest, DeathDataTest2Phases) { |   343 TEST_F(TrackedObjectsTest, DeathDataTest2Phases) { | 
|   280   ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); |   344   ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); | 
|   281  |   345  | 
|   282   std::unique_ptr<DeathData> data(new DeathData()); |   346   std::unique_ptr<DeathData> data(new DeathData()); | 
|   283   ASSERT_NE(data, nullptr); |   347   ASSERT_NE(data, nullptr); | 
|   284  |   348  | 
|   285   int32_t run_ms = 42; |   349   const int32_t run_ms = 42; | 
|   286   int32_t queue_ms = 8; |   350   const int32_t queue_ms = 8; | 
|   287  |   351  | 
|   288   const int kUnrandomInt = 0;  // Fake random int that ensure we sample data. |   352   const int kUnrandomInt = 0;  // Fake random int that ensure we sample data. | 
|   289   data->RecordDeath(queue_ms, run_ms, kUnrandomInt); |   353   data->RecordDurations(queue_ms, run_ms, kUnrandomInt); | 
|   290   data->RecordDeath(queue_ms, run_ms, kUnrandomInt); |   354   data->RecordDurations(queue_ms, run_ms, kUnrandomInt); | 
 |   355  | 
 |   356   data->RecordAllocations(kAllocOps, kFreeOps, kAllocatedBytes, kFreedBytes, | 
 |   357                           kAllocOverheadBytes, kMaxAllocatedBytes); | 
|   291  |   358  | 
|   292   data->OnProfilingPhaseCompleted(123); |   359   data->OnProfilingPhaseCompleted(123); | 
|   293   EXPECT_EQ(data->run_duration_sum(), run_ms + run_ms); |   360   EXPECT_EQ(data->run_duration_sum(), run_ms + run_ms); | 
|   294   EXPECT_EQ(data->run_duration_max(), 0); |   361   EXPECT_EQ(data->run_duration_max(), 0); | 
|   295   EXPECT_EQ(data->run_duration_sample(), run_ms); |   362   EXPECT_EQ(data->run_duration_sample(), run_ms); | 
|   296   EXPECT_EQ(data->queue_duration_sum(), queue_ms + queue_ms); |   363   EXPECT_EQ(data->queue_duration_sum(), queue_ms + queue_ms); | 
|   297   EXPECT_EQ(data->queue_duration_max(), 0); |   364   EXPECT_EQ(data->queue_duration_max(), 0); | 
|   298   EXPECT_EQ(data->queue_duration_sample(), queue_ms); |   365   EXPECT_EQ(data->queue_duration_sample(), queue_ms); | 
|   299   EXPECT_EQ(data->count(), 2); |   366   EXPECT_EQ(data->count(), 2); | 
 |   367  | 
 |   368   EXPECT_EQ(data->alloc_ops(), kAllocOps); | 
 |   369   EXPECT_EQ(data->free_ops(), kFreeOps); | 
 |   370   EXPECT_EQ(data->allocated_bytes(), kAllocatedBytes); | 
 |   371   EXPECT_EQ(data->freed_bytes(), kFreedBytes); | 
 |   372   EXPECT_EQ(data->alloc_overhead_bytes(), kAllocOverheadBytes); | 
 |   373   EXPECT_EQ(data->max_allocated_bytes(), kMaxAllocatedBytes); | 
 |   374  | 
|   300   ASSERT_NE(nullptr, data->last_phase_snapshot()); |   375   ASSERT_NE(nullptr, data->last_phase_snapshot()); | 
|   301   EXPECT_EQ(123, data->last_phase_snapshot()->profiling_phase); |   376   EXPECT_EQ(123, data->last_phase_snapshot()->profiling_phase); | 
|   302   EXPECT_EQ(2, data->last_phase_snapshot()->death_data.count); |   377   EXPECT_EQ(2, data->last_phase_snapshot()->death_data.count); | 
|   303   EXPECT_EQ(2 * run_ms, |   378   EXPECT_EQ(2 * run_ms, | 
|   304             data->last_phase_snapshot()->death_data.run_duration_sum); |   379             data->last_phase_snapshot()->death_data.run_duration_sum); | 
|   305   EXPECT_EQ(run_ms, data->last_phase_snapshot()->death_data.run_duration_max); |   380   EXPECT_EQ(run_ms, data->last_phase_snapshot()->death_data.run_duration_max); | 
|   306   EXPECT_EQ(run_ms, |   381   EXPECT_EQ(run_ms, | 
|   307             data->last_phase_snapshot()->death_data.run_duration_sample); |   382             data->last_phase_snapshot()->death_data.run_duration_sample); | 
|   308   EXPECT_EQ(2 * queue_ms, |   383   EXPECT_EQ(2 * queue_ms, | 
|   309             data->last_phase_snapshot()->death_data.queue_duration_sum); |   384             data->last_phase_snapshot()->death_data.queue_duration_sum); | 
|   310   EXPECT_EQ(queue_ms, |   385   EXPECT_EQ(queue_ms, | 
|   311             data->last_phase_snapshot()->death_data.queue_duration_max); |   386             data->last_phase_snapshot()->death_data.queue_duration_max); | 
|   312   EXPECT_EQ(queue_ms, |   387   EXPECT_EQ(queue_ms, | 
|   313             data->last_phase_snapshot()->death_data.queue_duration_sample); |   388             data->last_phase_snapshot()->death_data.queue_duration_sample); | 
 |   389  | 
 |   390   EXPECT_EQ(kAllocOps, data->last_phase_snapshot()->death_data.alloc_ops); | 
 |   391   EXPECT_EQ(kFreeOps, data->last_phase_snapshot()->death_data.free_ops); | 
 |   392   EXPECT_EQ(kAllocatedBytes, | 
 |   393             data->last_phase_snapshot()->death_data.allocated_bytes); | 
 |   394   EXPECT_EQ(kFreedBytes, data->last_phase_snapshot()->death_data.freed_bytes); | 
 |   395   EXPECT_EQ(kAllocOverheadBytes, | 
 |   396             data->last_phase_snapshot()->death_data.alloc_overhead_bytes); | 
 |   397   EXPECT_EQ(kMaxAllocatedBytes, | 
 |   398             data->last_phase_snapshot()->death_data.max_allocated_bytes); | 
 |   399  | 
|   314   EXPECT_EQ(nullptr, data->last_phase_snapshot()->prev); |   400   EXPECT_EQ(nullptr, data->last_phase_snapshot()->prev); | 
|   315  |   401  | 
|   316   int32_t run_ms1 = 21; |   402   const int32_t run_ms1 = 21; | 
|   317   int32_t queue_ms1 = 4; |   403   const int32_t queue_ms1 = 4; | 
|   318  |   404  | 
|   319   data->RecordDeath(queue_ms1, run_ms1, kUnrandomInt); |   405   data->RecordDurations(queue_ms1, run_ms1, kUnrandomInt); | 
 |   406   data->RecordAllocations(kAllocOps, kFreeOps, kAllocatedBytes, kFreedBytes, | 
 |   407                           kAllocOverheadBytes, kMaxAllocatedBytes); | 
 |   408  | 
|   320   EXPECT_EQ(data->run_duration_sum(), run_ms + run_ms + run_ms1); |   409   EXPECT_EQ(data->run_duration_sum(), run_ms + run_ms + run_ms1); | 
|   321   EXPECT_EQ(data->run_duration_max(), run_ms1); |   410   EXPECT_EQ(data->run_duration_max(), run_ms1); | 
|   322   EXPECT_EQ(data->run_duration_sample(), run_ms1); |   411   EXPECT_EQ(data->run_duration_sample(), run_ms1); | 
|   323   EXPECT_EQ(data->queue_duration_sum(), queue_ms + queue_ms + queue_ms1); |   412   EXPECT_EQ(data->queue_duration_sum(), queue_ms + queue_ms + queue_ms1); | 
|   324   EXPECT_EQ(data->queue_duration_max(), queue_ms1); |   413   EXPECT_EQ(data->queue_duration_max(), queue_ms1); | 
|   325   EXPECT_EQ(data->queue_duration_sample(), queue_ms1); |   414   EXPECT_EQ(data->queue_duration_sample(), queue_ms1); | 
|   326   EXPECT_EQ(data->count(), 3); |   415   EXPECT_EQ(data->count(), 3); | 
 |   416  | 
 |   417   EXPECT_EQ(data->alloc_ops(), 2 * kAllocOps); | 
 |   418   EXPECT_EQ(data->free_ops(), 2 * kFreeOps); | 
 |   419   EXPECT_EQ(data->allocated_bytes(), 2 * kAllocatedBytes); | 
 |   420   EXPECT_EQ(data->freed_bytes(), 2 * kFreedBytes); | 
 |   421   EXPECT_EQ(data->alloc_overhead_bytes(), 2 * kAllocOverheadBytes); | 
 |   422   EXPECT_EQ(data->max_allocated_bytes(), kMaxAllocatedBytes); | 
 |   423  | 
|   327   ASSERT_NE(nullptr, data->last_phase_snapshot()); |   424   ASSERT_NE(nullptr, data->last_phase_snapshot()); | 
|   328   EXPECT_EQ(123, data->last_phase_snapshot()->profiling_phase); |   425   EXPECT_EQ(123, data->last_phase_snapshot()->profiling_phase); | 
|   329   EXPECT_EQ(2, data->last_phase_snapshot()->death_data.count); |   426   EXPECT_EQ(2, data->last_phase_snapshot()->death_data.count); | 
|   330   EXPECT_EQ(2 * run_ms, |   427   EXPECT_EQ(2 * run_ms, | 
|   331             data->last_phase_snapshot()->death_data.run_duration_sum); |   428             data->last_phase_snapshot()->death_data.run_duration_sum); | 
|   332   EXPECT_EQ(run_ms, data->last_phase_snapshot()->death_data.run_duration_max); |   429   EXPECT_EQ(run_ms, data->last_phase_snapshot()->death_data.run_duration_max); | 
|   333   EXPECT_EQ(run_ms, |   430   EXPECT_EQ(run_ms, | 
|   334             data->last_phase_snapshot()->death_data.run_duration_sample); |   431             data->last_phase_snapshot()->death_data.run_duration_sample); | 
|   335   EXPECT_EQ(2 * queue_ms, |   432   EXPECT_EQ(2 * queue_ms, | 
|   336             data->last_phase_snapshot()->death_data.queue_duration_sum); |   433             data->last_phase_snapshot()->death_data.queue_duration_sum); | 
|   337   EXPECT_EQ(queue_ms, |   434   EXPECT_EQ(queue_ms, | 
|   338             data->last_phase_snapshot()->death_data.queue_duration_max); |   435             data->last_phase_snapshot()->death_data.queue_duration_max); | 
|   339   EXPECT_EQ(queue_ms, |   436   EXPECT_EQ(queue_ms, | 
|   340             data->last_phase_snapshot()->death_data.queue_duration_sample); |   437             data->last_phase_snapshot()->death_data.queue_duration_sample); | 
 |   438  | 
 |   439   EXPECT_EQ(kAllocOps, data->last_phase_snapshot()->death_data.alloc_ops); | 
 |   440   EXPECT_EQ(kFreeOps, data->last_phase_snapshot()->death_data.free_ops); | 
 |   441   EXPECT_EQ(kAllocatedBytes, | 
 |   442             data->last_phase_snapshot()->death_data.allocated_bytes); | 
 |   443   EXPECT_EQ(kFreedBytes, data->last_phase_snapshot()->death_data.freed_bytes); | 
 |   444   EXPECT_EQ(kAllocOverheadBytes, | 
 |   445             data->last_phase_snapshot()->death_data.alloc_overhead_bytes); | 
 |   446   EXPECT_EQ(kMaxAllocatedBytes, | 
 |   447             data->last_phase_snapshot()->death_data.max_allocated_bytes); | 
 |   448  | 
|   341   EXPECT_EQ(nullptr, data->last_phase_snapshot()->prev); |   449   EXPECT_EQ(nullptr, data->last_phase_snapshot()->prev); | 
|   342 } |   450 } | 
|   343  |   451  | 
|   344 TEST_F(TrackedObjectsTest, Delta) { |   452 TEST_F(TrackedObjectsTest, Delta) { | 
|   345   ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); |   453   ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); | 
|   346  |   454  | 
|   347   DeathDataSnapshot snapshot; |   455   DeathDataSnapshot snapshot; | 
|   348   snapshot.count = 10; |   456   snapshot.count = 10; | 
|   349   snapshot.run_duration_sum = 100; |   457   snapshot.run_duration_sum = 100; | 
|   350   snapshot.run_duration_max = 50; |   458   snapshot.run_duration_max = 50; | 
|   351   snapshot.run_duration_sample = 25; |   459   snapshot.run_duration_sample = 25; | 
|   352   snapshot.queue_duration_sum = 200; |   460   snapshot.queue_duration_sum = 200; | 
|   353   snapshot.queue_duration_max = 101; |   461   snapshot.queue_duration_max = 101; | 
|   354   snapshot.queue_duration_sample = 26; |   462   snapshot.queue_duration_sample = 26; | 
|   355  |   463  | 
 |   464   snapshot.alloc_ops = 95; | 
 |   465   snapshot.free_ops = 90; | 
 |   466   snapshot.allocated_bytes = 10240; | 
 |   467   snapshot.freed_bytes = 4096; | 
 |   468   snapshot.alloc_overhead_bytes = 950; | 
 |   469   snapshot.max_allocated_bytes = 10240; | 
 |   470  | 
|   356   DeathDataSnapshot older_snapshot; |   471   DeathDataSnapshot older_snapshot; | 
|   357   older_snapshot.count = 2; |   472   older_snapshot.count = 2; | 
|   358   older_snapshot.run_duration_sum = 95; |   473   older_snapshot.run_duration_sum = 95; | 
|   359   older_snapshot.run_duration_max = 48; |   474   older_snapshot.run_duration_max = 48; | 
|   360   older_snapshot.run_duration_sample = 22; |   475   older_snapshot.run_duration_sample = 22; | 
|   361   older_snapshot.queue_duration_sum = 190; |   476   older_snapshot.queue_duration_sum = 190; | 
|   362   older_snapshot.queue_duration_max = 99; |   477   older_snapshot.queue_duration_max = 99; | 
|   363   older_snapshot.queue_duration_sample = 21; |   478   older_snapshot.queue_duration_sample = 21; | 
|   364  |   479  | 
 |   480   older_snapshot.alloc_ops = 45; | 
 |   481   older_snapshot.free_ops = 40; | 
 |   482   older_snapshot.allocated_bytes = 4096; | 
 |   483   older_snapshot.freed_bytes = 2048; | 
 |   484   older_snapshot.alloc_overhead_bytes = 450; | 
 |   485   older_snapshot.max_allocated_bytes = 10200; | 
 |   486  | 
|   365   const DeathDataSnapshot& delta = snapshot.Delta(older_snapshot); |   487   const DeathDataSnapshot& delta = snapshot.Delta(older_snapshot); | 
|   366   EXPECT_EQ(8, delta.count); |   488   EXPECT_EQ(8, delta.count); | 
|   367   EXPECT_EQ(5, delta.run_duration_sum); |   489   EXPECT_EQ(5, delta.run_duration_sum); | 
|   368   EXPECT_EQ(50, delta.run_duration_max); |   490   EXPECT_EQ(50, delta.run_duration_max); | 
|   369   EXPECT_EQ(25, delta.run_duration_sample); |   491   EXPECT_EQ(25, delta.run_duration_sample); | 
|   370   EXPECT_EQ(10, delta.queue_duration_sum); |   492   EXPECT_EQ(10, delta.queue_duration_sum); | 
|   371   EXPECT_EQ(101, delta.queue_duration_max); |   493   EXPECT_EQ(101, delta.queue_duration_max); | 
|   372   EXPECT_EQ(26, delta.queue_duration_sample); |   494   EXPECT_EQ(26, delta.queue_duration_sample); | 
 |   495  | 
 |   496   EXPECT_EQ(50, delta.alloc_ops); | 
 |   497   EXPECT_EQ(50, delta.free_ops); | 
 |   498   EXPECT_EQ(6144, delta.allocated_bytes); | 
 |   499   EXPECT_EQ(2048, delta.freed_bytes); | 
 |   500   EXPECT_EQ(500, delta.alloc_overhead_bytes); | 
 |   501   EXPECT_EQ(10240, delta.max_allocated_bytes); | 
|   373 } |   502 } | 
|   374  |   503  | 
|   375 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToSnapshotWorkerThread) { |   504 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToSnapshotWorkerThread) { | 
|   376   // Start in the deactivated state. |   505   // Start in the deactivated state. | 
|   377   ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED); |   506   ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED); | 
|   378  |   507  | 
|   379   const char kFunction[] = "DeactivatedBirthOnlyToSnapshotWorkerThread"; |   508   const char kFunction[] = "DeactivatedBirthOnlyToSnapshotWorkerThread"; | 
|   380   Location location(kFunction, kFile, kLineNumber, NULL); |   509   Location location(kFunction, kFile, kLineNumber, NULL); | 
|   381   TallyABirth(location, std::string()); |   510   TallyABirth(location, std::string()); | 
|   382  |   511  | 
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   725   pending_task.time_posted = kTimePosted;  // Overwrite implied Now(). |   854   pending_task.time_posted = kTimePosted;  // Overwrite implied Now(). | 
|   726  |   855  | 
|   727   const unsigned int kStartOfRun = 5; |   856   const unsigned int kStartOfRun = 5; | 
|   728   const unsigned int kEndOfRun = 7; |   857   const unsigned int kEndOfRun = 7; | 
|   729   SetTestTime(kStartOfRun); |   858   SetTestTime(kStartOfRun); | 
|   730   TaskStopwatch stopwatch; |   859   TaskStopwatch stopwatch; | 
|   731   stopwatch.Start(); |   860   stopwatch.Start(); | 
|   732   SetTestTime(kEndOfRun); |   861   SetTestTime(kEndOfRun); | 
|   733   stopwatch.Stop(); |   862   stopwatch.Stop(); | 
|   734  |   863  | 
 |   864   // DO NOT SUBMIT | 
|   735   ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch); |   865   ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch); | 
|   736  |   866  | 
|   737   ThreadData::OnProfilingPhaseCompleted(0); |   867   ThreadData::OnProfilingPhaseCompleted(0); | 
|   738  |   868  | 
|   739   ProcessDataSnapshot process_data; |   869   ProcessDataSnapshot process_data; | 
|   740   ThreadData::Snapshot(1, &process_data); |   870   ThreadData::Snapshot(1, &process_data); | 
|   741  |   871  | 
|   742   ASSERT_EQ(2u, process_data.phased_snapshots.size()); |   872   ASSERT_EQ(2u, process_data.phased_snapshots.size()); | 
|   743  |   873  | 
|   744   auto it0 = process_data.phased_snapshots.find(0); |   874   auto it0 = process_data.phased_snapshots.find(0); | 
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1178   EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_max); |  1308   EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_max); | 
|  1179   EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sample); |  1309   EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sample); | 
|  1180   EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sum); |  1310   EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sum); | 
|  1181   EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_max); |  1311   EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_max); | 
|  1182   EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sample); |  1312   EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sample); | 
|  1183   EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].death_thread_name); |  1313   EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].death_thread_name); | 
|  1184   EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |  1314   EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 
|  1185 } |  1315 } | 
|  1186  |  1316  | 
|  1187 }  // namespace tracked_objects |  1317 }  // namespace tracked_objects | 
| OLD | NEW |