Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(205)

Side by Side Diff: base/tracked_objects_unittest.cc

Issue 985773002: Introducing phased profiling framework (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@write_to_file
Patch Set: More asvitkine@ comments. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 10
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 } 64 }
65 65
66 // Helper function to verify the most common test expectations. 66 // Helper function to verify the most common test expectations.
67 void ExpectSimpleProcessData(const ProcessDataSnapshot& process_data, 67 void ExpectSimpleProcessData(const ProcessDataSnapshot& process_data,
68 const std::string& function_name, 68 const std::string& function_name,
69 const std::string& birth_thread, 69 const std::string& birth_thread,
70 const std::string& death_thread, 70 const std::string& death_thread,
71 int count, 71 int count,
72 int run_ms, 72 int run_ms,
73 int queue_ms) { 73 int queue_ms) {
74 ASSERT_EQ(1u, process_data.tasks.size()); 74 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size());
Ilya Sherman 2015/03/17 23:57:38 nit: The "u" is important -- you're currently comp
vadimt 2015/03/19 00:20:44 Done.
75 const PhasedProcessDataSnapshotMap::const_iterator it =
Ilya Sherman 2015/03/17 23:57:38 nit: auto
vadimt 2015/03/19 00:20:44 Done.
76 process_data.phased_process_data_snapshots.find(0);
77 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end());
78 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
75 79
76 EXPECT_EQ(kFile, process_data.tasks[0].birth.location.file_name); 80 ASSERT_EQ(1u, process_data_phase.tasks.size());
81
82 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name);
77 EXPECT_EQ(function_name, 83 EXPECT_EQ(function_name,
78 process_data.tasks[0].birth.location.function_name); 84 process_data_phase.tasks[0].birth.location.function_name);
79 EXPECT_EQ(kLineNumber, process_data.tasks[0].birth.location.line_number); 85 EXPECT_EQ(kLineNumber,
86 process_data_phase.tasks[0].birth.location.line_number);
80 87
81 EXPECT_EQ(birth_thread, process_data.tasks[0].birth.thread_name); 88 EXPECT_EQ(birth_thread, process_data_phase.tasks[0].birth.thread_name);
82 89
83 EXPECT_EQ(count, process_data.tasks[0].death_data.count); 90 EXPECT_EQ(count, process_data_phase.tasks[0].death_data.count);
84 EXPECT_EQ(count * run_ms, 91 EXPECT_EQ(count * run_ms,
85 process_data.tasks[0].death_data.run_duration_sum); 92 process_data_phase.tasks[0].death_data.run_duration_sum);
86 EXPECT_EQ(run_ms, process_data.tasks[0].death_data.run_duration_max); 93 EXPECT_EQ(run_ms, process_data_phase.tasks[0].death_data.run_duration_max);
87 EXPECT_EQ(run_ms, process_data.tasks[0].death_data.run_duration_sample); 94 EXPECT_EQ(run_ms,
95 process_data_phase.tasks[0].death_data.run_duration_sample);
88 EXPECT_EQ(count * queue_ms, 96 EXPECT_EQ(count * queue_ms,
89 process_data.tasks[0].death_data.queue_duration_sum); 97 process_data_phase.tasks[0].death_data.queue_duration_sum);
90 EXPECT_EQ(queue_ms, process_data.tasks[0].death_data.queue_duration_max); 98 EXPECT_EQ(queue_ms,
91 EXPECT_EQ(queue_ms, process_data.tasks[0].death_data.queue_duration_sample); 99 process_data_phase.tasks[0].death_data.queue_duration_max);
100 EXPECT_EQ(queue_ms,
101 process_data_phase.tasks[0].death_data.queue_duration_sample);
92 102
93 EXPECT_EQ(death_thread, process_data.tasks[0].death_thread_name); 103 EXPECT_EQ(death_thread, process_data_phase.tasks[0].death_thread_name);
94 104
95 EXPECT_EQ(0u, process_data.descendants.size()); 105 EXPECT_EQ(0u, process_data_phase.descendants.size());
96 106
97 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 107 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
98 } 108 }
99 109
100 // Sets time that will be returned by ThreadData::Now(). 110 // Sets time that will be returned by ThreadData::Now().
101 static void SetTestTime(unsigned int test_time) { test_time_ = test_time; } 111 static void SetTestTime(unsigned int test_time) { test_time_ = test_time; }
102 112
103 private: 113 private:
104 // Returns test time in milliseconds. 114 // Returns test time in milliseconds.
105 static unsigned int GetTestTime() { return test_time_; } 115 static unsigned int GetTestTime() { return test_time_; }
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 } else { 233 } else {
224 EXPECT_EQ(0u, parent_child_set.size()); // no stats. 234 EXPECT_EQ(0u, parent_child_set.size()); // no stats.
225 } 235 }
226 236
227 // The births were at the same location as the one known death. 237 // The births were at the same location as the one known death.
228 EXPECT_EQ(birth_map.begin()->second, death_map.begin()->first); 238 EXPECT_EQ(birth_map.begin()->second, death_map.begin()->first);
229 239
230 ProcessDataSnapshot process_data; 240 ProcessDataSnapshot process_data;
231 ThreadData::Snapshot(&process_data); 241 ThreadData::Snapshot(&process_data);
232 242
233 ASSERT_EQ(1u, process_data.tasks.size()); 243 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size());
234 EXPECT_EQ(kFile, process_data.tasks[0].birth.location.file_name); 244 const PhasedProcessDataSnapshotMap::const_iterator it =
235 EXPECT_EQ(kFunction, process_data.tasks[0].birth.location.function_name); 245 process_data.phased_process_data_snapshots.find(0);
236 EXPECT_EQ(kLineNumber, process_data.tasks[0].birth.location.line_number); 246 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end());
237 EXPECT_EQ(kWorkerThreadName, process_data.tasks[0].birth.thread_name); 247 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
238 EXPECT_EQ(1, process_data.tasks[0].death_data.count); 248 ASSERT_EQ(1u, process_data_phase.tasks.size());
239 EXPECT_EQ(time_elapsed, process_data.tasks[0].death_data.run_duration_sum); 249 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name);
240 EXPECT_EQ(time_elapsed, process_data.tasks[0].death_data.run_duration_max); 250 EXPECT_EQ(kFunction,
241 EXPECT_EQ(time_elapsed, process_data.tasks[0].death_data.run_duration_sample); 251 process_data_phase.tasks[0].birth.location.function_name);
242 EXPECT_EQ(0, process_data.tasks[0].death_data.queue_duration_sum); 252 EXPECT_EQ(kLineNumber,
243 EXPECT_EQ(0, process_data.tasks[0].death_data.queue_duration_max); 253 process_data_phase.tasks[0].birth.location.line_number);
244 EXPECT_EQ(0, process_data.tasks[0].death_data.queue_duration_sample); 254 EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].birth.thread_name);
245 EXPECT_EQ(kWorkerThreadName, process_data.tasks[0].death_thread_name); 255 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count);
256 EXPECT_EQ(time_elapsed,
257 process_data_phase.tasks[0].death_data.run_duration_sum);
258 EXPECT_EQ(time_elapsed,
259 process_data_phase.tasks[0].death_data.run_duration_max);
260 EXPECT_EQ(time_elapsed,
261 process_data_phase.tasks[0].death_data.run_duration_sample);
262 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sum);
263 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_max);
264 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sample);
265 EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].death_thread_name);
246 266
247 if (ThreadData::TrackingParentChildStatus()) { 267 if (ThreadData::TrackingParentChildStatus()) {
248 ASSERT_EQ(1u, process_data.descendants.size()); 268 ASSERT_EQ(1u, process_data_phase.descendants.size());
249 EXPECT_EQ(kFile, process_data.descendants[0].parent.location.file_name); 269 EXPECT_EQ(kFile,
270 process_data_phase.descendants[0].parent.location.file_name);
250 EXPECT_EQ(kFunction, 271 EXPECT_EQ(kFunction,
251 process_data.descendants[0].parent.location.function_name); 272 process_data_phase.descendants[0].parent.location.function_name);
252 EXPECT_EQ(kLineNumber, 273 EXPECT_EQ(kLineNumber,
253 process_data.descendants[0].parent.location.line_number); 274 process_data_phase.descendants[0].parent.location.line_number);
254 EXPECT_EQ(kWorkerThreadName, 275 EXPECT_EQ(kWorkerThreadName,
255 process_data.descendants[0].parent.thread_name); 276 process_data_phase.descendants[0].parent.thread_name);
256 EXPECT_EQ(kFile, process_data.descendants[0].child.location.file_name); 277 EXPECT_EQ(kFile,
278 process_data_phase.descendants[0].child.location.file_name);
257 EXPECT_EQ(kFunction, 279 EXPECT_EQ(kFunction,
258 process_data.descendants[0].child.location.function_name); 280 process_data_phase.descendants[0].child.location.function_name);
259 EXPECT_EQ(kLineNumber, 281 EXPECT_EQ(kLineNumber,
260 process_data.descendants[0].child.location.line_number); 282 process_data_phase.descendants[0].child.location.line_number);
261 EXPECT_EQ(kWorkerThreadName, process_data.descendants[0].child.thread_name); 283 EXPECT_EQ(kWorkerThreadName,
284 process_data_phase.descendants[0].child.thread_name);
262 } else { 285 } else {
263 EXPECT_EQ(0u, process_data.descendants.size()); 286 EXPECT_EQ(0u, process_data_phase.descendants.size());
264 } 287 }
265 } 288 }
266 289
267 TEST_F(TrackedObjectsTest, DeathDataTest) { 290 TEST_F(TrackedObjectsTest, DeathDataTest) {
268 if (!ThreadData::InitializeAndSetTrackingStatus( 291 if (!ThreadData::InitializeAndSetTrackingStatus(
269 ThreadData::PROFILING_CHILDREN_ACTIVE)) { 292 ThreadData::PROFILING_CHILDREN_ACTIVE)) {
270 return; 293 return;
271 } 294 }
272 295
273 scoped_ptr<DeathData> data(new DeathData()); 296 scoped_ptr<DeathData> data(new DeathData());
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) { 334 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) {
312 return; 335 return;
313 } 336 }
314 337
315 const char kFunction[] = "DeactivatedBirthOnlyToSnapshotWorkerThread"; 338 const char kFunction[] = "DeactivatedBirthOnlyToSnapshotWorkerThread";
316 Location location(kFunction, kFile, kLineNumber, NULL); 339 Location location(kFunction, kFile, kLineNumber, NULL);
317 TallyABirth(location, std::string()); 340 TallyABirth(location, std::string());
318 341
319 ProcessDataSnapshot process_data; 342 ProcessDataSnapshot process_data;
320 ThreadData::Snapshot(&process_data); 343 ThreadData::Snapshot(&process_data);
321 EXPECT_EQ(0u, process_data.tasks.size()); 344
322 EXPECT_EQ(0u, process_data.descendants.size()); 345 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size());
346 const PhasedProcessDataSnapshotMap::const_iterator it =
347 process_data.phased_process_data_snapshots.find(0);
348 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end());
349 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
350
351 EXPECT_EQ(0u, process_data_phase.tasks.size());
352 EXPECT_EQ(0u, process_data_phase.descendants.size());
323 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 353 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
324 } 354 }
325 355
326 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToSnapshotMainThread) { 356 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToSnapshotMainThread) {
327 // Start in the deactivated state. 357 // Start in the deactivated state.
328 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) { 358 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) {
329 return; 359 return;
330 } 360 }
331 361
332 const char kFunction[] = "DeactivatedBirthOnlyToSnapshotMainThread"; 362 const char kFunction[] = "DeactivatedBirthOnlyToSnapshotMainThread";
333 Location location(kFunction, kFile, kLineNumber, NULL); 363 Location location(kFunction, kFile, kLineNumber, NULL);
334 TallyABirth(location, kMainThreadName); 364 TallyABirth(location, kMainThreadName);
335 365
336 ProcessDataSnapshot process_data; 366 ProcessDataSnapshot process_data;
337 ThreadData::Snapshot(&process_data); 367 ThreadData::Snapshot(&process_data);
338 EXPECT_EQ(0u, process_data.tasks.size()); 368
339 EXPECT_EQ(0u, process_data.descendants.size()); 369 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size());
370 const PhasedProcessDataSnapshotMap::const_iterator it =
371 process_data.phased_process_data_snapshots.find(0);
372 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end());
373 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
374
375 EXPECT_EQ(0u, process_data_phase.tasks.size());
376 EXPECT_EQ(0u, process_data_phase.descendants.size());
340 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 377 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
341 } 378 }
342 379
343 TEST_F(TrackedObjectsTest, BirthOnlyToSnapshotWorkerThread) { 380 TEST_F(TrackedObjectsTest, BirthOnlyToSnapshotWorkerThread) {
344 if (!ThreadData::InitializeAndSetTrackingStatus( 381 if (!ThreadData::InitializeAndSetTrackingStatus(
345 ThreadData::PROFILING_CHILDREN_ACTIVE)) { 382 ThreadData::PROFILING_CHILDREN_ACTIVE)) {
346 return; 383 return;
347 } 384 }
348 385
349 const char kFunction[] = "BirthOnlyToSnapshotWorkerThread"; 386 const char kFunction[] = "BirthOnlyToSnapshotWorkerThread";
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 Location location(kFunction, kFile, kLineNumber, NULL); 455 Location location(kFunction, kFile, kLineNumber, NULL);
419 TallyABirth(location, kMainThreadName); 456 TallyABirth(location, kMainThreadName);
420 457
421 const TrackedTime kTimePosted = TrackedTime::FromMilliseconds(1); 458 const TrackedTime kTimePosted = TrackedTime::FromMilliseconds(1);
422 const base::TimeTicks kDelayedStartTime = base::TimeTicks(); 459 const base::TimeTicks kDelayedStartTime = base::TimeTicks();
423 // TrackingInfo will call TallyABirth() during construction. 460 // TrackingInfo will call TallyABirth() during construction.
424 base::TrackingInfo pending_task(location, kDelayedStartTime); 461 base::TrackingInfo pending_task(location, kDelayedStartTime);
425 pending_task.time_posted = kTimePosted; // Overwrite implied Now(). 462 pending_task.time_posted = kTimePosted; // Overwrite implied Now().
426 463
427 // Turn off tracking now that we have births. 464 // Turn off tracking now that we have births.
428 EXPECT_TRUE(ThreadData::InitializeAndSetTrackingStatus( 465 EXPECT_TRUE(
429 ThreadData::DEACTIVATED)); 466 ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED));
430 467
431 const unsigned int kStartOfRun = 5; 468 const unsigned int kStartOfRun = 5;
432 const unsigned int kEndOfRun = 7; 469 const unsigned int kEndOfRun = 7;
433 SetTestTime(kStartOfRun); 470 SetTestTime(kStartOfRun);
434 TaskStopwatch stopwatch; 471 TaskStopwatch stopwatch;
435 stopwatch.Start(); 472 stopwatch.Start();
436 SetTestTime(kEndOfRun); 473 SetTestTime(kEndOfRun);
437 stopwatch.Stop(); 474 stopwatch.Stop();
438 475
439 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch); 476 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch);
(...skipping 27 matching lines...) Expand all
467 SetTestTime(kStartOfRun); 504 SetTestTime(kStartOfRun);
468 TaskStopwatch stopwatch; 505 TaskStopwatch stopwatch;
469 stopwatch.Start(); 506 stopwatch.Start();
470 SetTestTime(kEndOfRun); 507 SetTestTime(kEndOfRun);
471 stopwatch.Stop(); 508 stopwatch.Stop();
472 509
473 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch); 510 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch);
474 511
475 ProcessDataSnapshot process_data; 512 ProcessDataSnapshot process_data;
476 ThreadData::Snapshot(&process_data); 513 ThreadData::Snapshot(&process_data);
477 EXPECT_EQ(0u, process_data.tasks.size()); 514
478 EXPECT_EQ(0u, process_data.descendants.size()); 515 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size());
516 const PhasedProcessDataSnapshotMap::const_iterator it =
517 process_data.phased_process_data_snapshots.find(0);
518 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end());
519 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
520
521 EXPECT_EQ(0u, process_data_phase.tasks.size());
522 EXPECT_EQ(0u, process_data_phase.descendants.size());
479 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 523 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
480 } 524 }
481 525
482 TEST_F(TrackedObjectsTest, TwoLives) { 526 TEST_F(TrackedObjectsTest, TwoLives) {
483 if (!ThreadData::InitializeAndSetTrackingStatus( 527 if (!ThreadData::InitializeAndSetTrackingStatus(
484 ThreadData::PROFILING_CHILDREN_ACTIVE)) { 528 ThreadData::PROFILING_CHILDREN_ACTIVE)) {
485 return; 529 return;
486 } 530 }
487 531
488 const char kFunction[] = "TwoLives"; 532 const char kFunction[] = "TwoLives";
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 595
552 const int kSecondFakeLineNumber = 999; 596 const int kSecondFakeLineNumber = 999;
553 Location second_location(kFunction, kFile, kSecondFakeLineNumber, NULL); 597 Location second_location(kFunction, kFile, kSecondFakeLineNumber, NULL);
554 598
555 // TrackingInfo will call TallyABirth() during construction. 599 // TrackingInfo will call TallyABirth() during construction.
556 base::TrackingInfo pending_task2(second_location, kDelayedStartTime); 600 base::TrackingInfo pending_task2(second_location, kDelayedStartTime);
557 pending_task2.time_posted = kTimePosted; // Overwrite implied Now(). 601 pending_task2.time_posted = kTimePosted; // Overwrite implied Now().
558 602
559 ProcessDataSnapshot process_data; 603 ProcessDataSnapshot process_data;
560 ThreadData::Snapshot(&process_data); 604 ThreadData::Snapshot(&process_data);
561 ASSERT_EQ(2u, process_data.tasks.size());
562 605
563 EXPECT_EQ(kFile, process_data.tasks[0].birth.location.file_name); 606 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size());
564 EXPECT_EQ(kFunction, process_data.tasks[0].birth.location.function_name); 607 const PhasedProcessDataSnapshotMap::const_iterator it =
565 EXPECT_EQ(kLineNumber, process_data.tasks[0].birth.location.line_number); 608 process_data.phased_process_data_snapshots.find(0);
566 EXPECT_EQ(kMainThreadName, process_data.tasks[0].birth.thread_name); 609 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end());
567 EXPECT_EQ(1, process_data.tasks[0].death_data.count); 610 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
568 EXPECT_EQ(2, process_data.tasks[0].death_data.run_duration_sum); 611
569 EXPECT_EQ(2, process_data.tasks[0].death_data.run_duration_max); 612 ASSERT_EQ(2u, process_data_phase.tasks.size());
570 EXPECT_EQ(2, process_data.tasks[0].death_data.run_duration_sample); 613
571 EXPECT_EQ(4, process_data.tasks[0].death_data.queue_duration_sum); 614 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name);
572 EXPECT_EQ(4, process_data.tasks[0].death_data.queue_duration_max); 615 EXPECT_EQ(kFunction,
573 EXPECT_EQ(4, process_data.tasks[0].death_data.queue_duration_sample); 616 process_data_phase.tasks[0].birth.location.function_name);
574 EXPECT_EQ(kMainThreadName, process_data.tasks[0].death_thread_name); 617 EXPECT_EQ(kLineNumber,
575 EXPECT_EQ(kFile, process_data.tasks[1].birth.location.file_name); 618 process_data_phase.tasks[0].birth.location.line_number);
576 EXPECT_EQ(kFunction, process_data.tasks[1].birth.location.function_name); 619 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[0].birth.thread_name);
620 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count);
621 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sum);
622 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_max);
623 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sample);
624 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sum);
625 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_max);
626 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sample);
627 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[0].death_thread_name);
628 EXPECT_EQ(kFile, process_data_phase.tasks[1].birth.location.file_name);
629 EXPECT_EQ(kFunction,
630 process_data_phase.tasks[1].birth.location.function_name);
577 EXPECT_EQ(kSecondFakeLineNumber, 631 EXPECT_EQ(kSecondFakeLineNumber,
578 process_data.tasks[1].birth.location.line_number); 632 process_data_phase.tasks[1].birth.location.line_number);
579 EXPECT_EQ(kMainThreadName, process_data.tasks[1].birth.thread_name); 633 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[1].birth.thread_name);
580 EXPECT_EQ(1, process_data.tasks[1].death_data.count); 634 EXPECT_EQ(1, process_data_phase.tasks[1].death_data.count);
581 EXPECT_EQ(0, process_data.tasks[1].death_data.run_duration_sum); 635 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sum);
582 EXPECT_EQ(0, process_data.tasks[1].death_data.run_duration_max); 636 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_max);
583 EXPECT_EQ(0, process_data.tasks[1].death_data.run_duration_sample); 637 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sample);
584 EXPECT_EQ(0, process_data.tasks[1].death_data.queue_duration_sum); 638 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sum);
585 EXPECT_EQ(0, process_data.tasks[1].death_data.queue_duration_max); 639 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_max);
586 EXPECT_EQ(0, process_data.tasks[1].death_data.queue_duration_sample); 640 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sample);
587 EXPECT_EQ(kStillAlive, process_data.tasks[1].death_thread_name); 641 EXPECT_EQ(kStillAlive, process_data_phase.tasks[1].death_thread_name);
588 EXPECT_EQ(0u, process_data.descendants.size()); 642 EXPECT_EQ(0u, process_data_phase.descendants.size());
589 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 643 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
590 } 644 }
591 645
592 TEST_F(TrackedObjectsTest, TaskWithNestedExclusion) { 646 TEST_F(TrackedObjectsTest, TaskWithNestedExclusion) {
593 if (!ThreadData::InitializeAndSetTrackingStatus( 647 if (!ThreadData::InitializeAndSetTrackingStatus(
594 ThreadData::PROFILING_CHILDREN_ACTIVE)) { 648 ThreadData::PROFILING_CHILDREN_ACTIVE)) {
595 return; 649 return;
596 } 650 }
597 651
598 const char kFunction[] = "TaskWithNestedExclusion"; 652 const char kFunction[] = "TaskWithNestedExclusion";
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 exclusion_stopwatch.Stop(); 766 exclusion_stopwatch.Stop();
713 } 767 }
714 SetTestTime(15); 768 SetTestTime(15);
715 task_stopwatch.Stop(); 769 task_stopwatch.Stop();
716 770
717 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, task_stopwatch); 771 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, task_stopwatch);
718 772
719 ProcessDataSnapshot process_data; 773 ProcessDataSnapshot process_data;
720 ThreadData::Snapshot(&process_data); 774 ThreadData::Snapshot(&process_data);
721 775
776 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size());
777 const PhasedProcessDataSnapshotMap::const_iterator it =
778 process_data.phased_process_data_snapshots.find(0);
779 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end());
780 const ProcessDataPhaseSnapshot& process_data_phase = it->second;
781
722 // The order in which the two task follow is platform-dependent. 782 // The order in which the two task follow is platform-dependent.
723 int t0 = (process_data.tasks[0].birth.location.line_number == kLineNumber) ? 783 int t0 =
724 0 : 1; 784 (process_data_phase.tasks[0].birth.location.line_number == kLineNumber)
785 ? 0
786 : 1;
725 int t1 = 1 - t0; 787 int t1 = 1 - t0;
726 788
727 ASSERT_EQ(2u, process_data.tasks.size()); 789 ASSERT_EQ(2u, process_data_phase.tasks.size());
728 EXPECT_EQ(kFile, process_data.tasks[t0].birth.location.file_name); 790 EXPECT_EQ(kFile, process_data_phase.tasks[t0].birth.location.file_name);
729 EXPECT_EQ(kFunction, process_data.tasks[t0].birth.location.function_name); 791 EXPECT_EQ(kFunction,
730 EXPECT_EQ(kLineNumber, process_data.tasks[t0].birth.location.line_number); 792 process_data_phase.tasks[t0].birth.location.function_name);
731 EXPECT_EQ(kMainThreadName, process_data.tasks[t0].birth.thread_name); 793 EXPECT_EQ(kLineNumber,
732 EXPECT_EQ(1, process_data.tasks[t0].death_data.count); 794 process_data_phase.tasks[t0].birth.location.line_number);
733 EXPECT_EQ(6, process_data.tasks[t0].death_data.run_duration_sum); 795 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t0].birth.thread_name);
734 EXPECT_EQ(6, process_data.tasks[t0].death_data.run_duration_max); 796 EXPECT_EQ(1, process_data_phase.tasks[t0].death_data.count);
735 EXPECT_EQ(6, process_data.tasks[t0].death_data.run_duration_sample); 797 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sum);
736 EXPECT_EQ(4, process_data.tasks[t0].death_data.queue_duration_sum); 798 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_max);
737 EXPECT_EQ(4, process_data.tasks[t0].death_data.queue_duration_max); 799 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sample);
738 EXPECT_EQ(4, process_data.tasks[t0].death_data.queue_duration_sample); 800 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sum);
739 EXPECT_EQ(kMainThreadName, process_data.tasks[t0].death_thread_name); 801 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_max);
740 EXPECT_EQ(kFile, process_data.tasks[t1].birth.location.file_name); 802 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sample);
741 EXPECT_EQ(kFunction, process_data.tasks[t1].birth.location.function_name); 803 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t0].death_thread_name);
804 EXPECT_EQ(kFile, process_data_phase.tasks[t1].birth.location.file_name);
805 EXPECT_EQ(kFunction,
806 process_data_phase.tasks[t1].birth.location.function_name);
742 EXPECT_EQ(kSecondFakeLineNumber, 807 EXPECT_EQ(kSecondFakeLineNumber,
743 process_data.tasks[t1].birth.location.line_number); 808 process_data_phase.tasks[t1].birth.location.line_number);
744 EXPECT_EQ(kMainThreadName, process_data.tasks[t1].birth.thread_name); 809 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].birth.thread_name);
745 EXPECT_EQ(1, process_data.tasks[t1].death_data.count); 810 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.count);
746 EXPECT_EQ(2, process_data.tasks[t1].death_data.run_duration_sum); 811 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sum);
747 EXPECT_EQ(2, process_data.tasks[t1].death_data.run_duration_max); 812 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_max);
748 EXPECT_EQ(2, process_data.tasks[t1].death_data.run_duration_sample); 813 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sample);
749 EXPECT_EQ(1, process_data.tasks[t1].death_data.queue_duration_sum); 814 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sum);
750 EXPECT_EQ(1, process_data.tasks[t1].death_data.queue_duration_max); 815 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_max);
751 EXPECT_EQ(1, process_data.tasks[t1].death_data.queue_duration_sample); 816 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sample);
752 EXPECT_EQ(kMainThreadName, process_data.tasks[t1].death_thread_name); 817 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].death_thread_name);
753 EXPECT_EQ(0u, process_data.descendants.size()); 818 EXPECT_EQ(0u, process_data_phase.descendants.size());
754 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); 819 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id);
755 } 820 }
756 821
757 } // namespace tracked_objects 822 } // namespace tracked_objects
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698