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

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

Powered by Google App Engine
This is Rietveld 408576698