Chromium Code Reviews| 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 #include "chrome/browser/metrics/metrics_log.h" | 5 #include "chrome/browser/metrics/metrics_log.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 467 | 467 |
| 468 // Test that we properly write profiler data to the log. | 468 // Test that we properly write profiler data to the log. |
| 469 TEST_F(MetricsLogTest, RecordProfilerData) { | 469 TEST_F(MetricsLogTest, RecordProfilerData) { |
| 470 TestMetricsLog log(kClientId, kSessionId); | 470 TestMetricsLog log(kClientId, kSessionId); |
| 471 EXPECT_EQ(0, log.uma_proto().profiler_event_size()); | 471 EXPECT_EQ(0, log.uma_proto().profiler_event_size()); |
| 472 | 472 |
| 473 { | 473 { |
| 474 ProcessDataSnapshot process_data; | 474 ProcessDataSnapshot process_data; |
| 475 process_data.process_id = 177; | 475 process_data.process_id = 177; |
| 476 process_data.tasks.push_back(TaskSnapshot()); | 476 process_data.tasks.push_back(TaskSnapshot()); |
| 477 process_data.tasks.back().birth.location.file_name = "file"; | 477 process_data.tasks.back().birth.location.file_name = "a/b/file.h"; |
| 478 process_data.tasks.back().birth.location.function_name = "function"; | 478 process_data.tasks.back().birth.location.function_name = "function"; |
| 479 process_data.tasks.back().birth.location.line_number = 1337; | 479 process_data.tasks.back().birth.location.line_number = 1337; |
| 480 process_data.tasks.back().birth.thread_name = "birth_thread"; | 480 process_data.tasks.back().birth.thread_name = "birth_thread"; |
| 481 process_data.tasks.back().death_data.count = 37; | 481 process_data.tasks.back().death_data.count = 37; |
| 482 process_data.tasks.back().death_data.run_duration_sum = 31; | 482 process_data.tasks.back().death_data.run_duration_sum = 31; |
| 483 process_data.tasks.back().death_data.run_duration_max = 17; | 483 process_data.tasks.back().death_data.run_duration_max = 17; |
| 484 process_data.tasks.back().death_data.run_duration_sample = 13; | 484 process_data.tasks.back().death_data.run_duration_sample = 13; |
| 485 process_data.tasks.back().death_data.queue_duration_sum = 8; | 485 process_data.tasks.back().death_data.queue_duration_sum = 8; |
| 486 process_data.tasks.back().death_data.queue_duration_max = 5; | 486 process_data.tasks.back().death_data.queue_duration_max = 5; |
| 487 process_data.tasks.back().death_data.queue_duration_sample = 3; | 487 process_data.tasks.back().death_data.queue_duration_sample = 3; |
| 488 process_data.tasks.back().death_thread_name = "Still_Alive"; | 488 process_data.tasks.back().death_thread_name = "Still_Alive"; |
| 489 process_data.tasks.push_back(TaskSnapshot()); | 489 process_data.tasks.push_back(TaskSnapshot()); |
| 490 process_data.tasks.back().birth.location.file_name = "file2"; | 490 process_data.tasks.back().birth.location.file_name = "c\\d\\file2"; |
| 491 process_data.tasks.back().birth.location.function_name = "function2"; | 491 process_data.tasks.back().birth.location.function_name = "function2"; |
| 492 process_data.tasks.back().birth.location.line_number = 1773; | 492 process_data.tasks.back().birth.location.line_number = 1773; |
| 493 process_data.tasks.back().birth.thread_name = "birth_thread2"; | 493 process_data.tasks.back().birth.thread_name = "birth_thread2"; |
| 494 process_data.tasks.back().death_data.count = 19; | 494 process_data.tasks.back().death_data.count = 19; |
| 495 process_data.tasks.back().death_data.run_duration_sum = 23; | 495 process_data.tasks.back().death_data.run_duration_sum = 23; |
| 496 process_data.tasks.back().death_data.run_duration_max = 11; | 496 process_data.tasks.back().death_data.run_duration_max = 11; |
| 497 process_data.tasks.back().death_data.run_duration_sample = 7; | 497 process_data.tasks.back().death_data.run_duration_sample = 7; |
| 498 process_data.tasks.back().death_data.queue_duration_sum = 0; | 498 process_data.tasks.back().death_data.queue_duration_sum = 0; |
| 499 process_data.tasks.back().death_data.queue_duration_max = 0; | 499 process_data.tasks.back().death_data.queue_duration_max = 0; |
| 500 process_data.tasks.back().death_data.queue_duration_sample = 0; | 500 process_data.tasks.back().death_data.queue_duration_sample = 0; |
| 501 process_data.tasks.back().death_thread_name = "death_thread"; | 501 process_data.tasks.back().death_thread_name = "death_thread"; |
| 502 | 502 |
| 503 log.RecordProfilerData(process_data, content::PROCESS_TYPE_BROWSER); | 503 log.RecordProfilerData(process_data, content::PROCESS_TYPE_BROWSER); |
| 504 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); | 504 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); |
| 505 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, | 505 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, |
| 506 log.uma_proto().profiler_event(0).profile_type()); | 506 log.uma_proto().profiler_event(0).profile_type()); |
| 507 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, | 507 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, |
| 508 log.uma_proto().profiler_event(0).time_source()); | 508 log.uma_proto().profiler_event(0).time_source()); |
| 509 | 509 |
| 510 ASSERT_EQ(2, log.uma_proto().profiler_event(0).tracked_object_size()); | 510 ASSERT_EQ(2, log.uma_proto().profiler_event(0).tracked_object_size()); |
| 511 | 511 |
| 512 const ProfilerEventProto::TrackedObject* tracked_object = | 512 const ProfilerEventProto::TrackedObject* tracked_object = |
| 513 &log.uma_proto().profiler_event(0).tracked_object(0); | 513 &log.uma_proto().profiler_event(0).tracked_object(0); |
| 514 EXPECT_EQ(GG_UINT64_C(10123486280357988687), | 514 EXPECT_EQ(MetricsLogBase::Hash("file.h"), |
| 515 tracked_object->source_file_name_hash()); | 515 tracked_object->source_file_name_hash()); |
| 516 EXPECT_EQ(GG_UINT64_C(13962325592283560029), | 516 EXPECT_EQ(MetricsLogBase::Hash("function"), |
| 517 tracked_object->source_function_name_hash()); | 517 tracked_object->source_function_name_hash()); |
| 518 EXPECT_EQ(1337, tracked_object->source_line_number()); | 518 EXPECT_EQ(1337, tracked_object->source_line_number()); |
| 519 EXPECT_EQ(GG_UINT64_C(3400908935414830400), | 519 EXPECT_EQ(MetricsLogBase::Hash("birth_thread"), |
| 520 tracked_object->birth_thread_name_hash()); | 520 tracked_object->birth_thread_name_hash()); |
| 521 EXPECT_EQ(37, tracked_object->exec_count()); | 521 EXPECT_EQ(37, tracked_object->exec_count()); |
| 522 EXPECT_EQ(31, tracked_object->exec_time_total()); | 522 EXPECT_EQ(31, tracked_object->exec_time_total()); |
| 523 EXPECT_EQ(13, tracked_object->exec_time_sampled()); | 523 EXPECT_EQ(13, tracked_object->exec_time_sampled()); |
| 524 EXPECT_EQ(8, tracked_object->queue_time_total()); | 524 EXPECT_EQ(8, tracked_object->queue_time_total()); |
| 525 EXPECT_EQ(3, tracked_object->queue_time_sampled()); | 525 EXPECT_EQ(3, tracked_object->queue_time_sampled()); |
| 526 EXPECT_EQ(GG_UINT64_C(10151977472163283085), | 526 EXPECT_EQ(MetricsLogBase::Hash("Still_Alive"), |
| 527 tracked_object->exec_thread_name_hash()); | 527 tracked_object->exec_thread_name_hash()); |
| 528 EXPECT_EQ(177U, tracked_object->process_id()); | 528 EXPECT_EQ(177U, tracked_object->process_id()); |
| 529 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, | 529 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, |
| 530 tracked_object->process_type()); | 530 tracked_object->process_type()); |
| 531 | 531 |
| 532 tracked_object = &log.uma_proto().profiler_event(0).tracked_object(1); | 532 tracked_object = &log.uma_proto().profiler_event(0).tracked_object(1); |
| 533 EXPECT_EQ(GG_UINT64_C(2025659946535236365), | 533 EXPECT_EQ(MetricsLogBase::Hash("file2"), |
| 534 tracked_object->source_file_name_hash()); | 534 tracked_object->source_file_name_hash()); |
| 535 EXPECT_EQ(GG_UINT64_C(55232426147951219), | 535 EXPECT_EQ(MetricsLogBase::Hash("function2"), |
| 536 tracked_object->source_function_name_hash()); | 536 tracked_object->source_function_name_hash()); |
| 537 EXPECT_EQ(1773, tracked_object->source_line_number()); | 537 EXPECT_EQ(1773, tracked_object->source_line_number()); |
| 538 EXPECT_EQ(GG_UINT64_C(1518842999910132863), | 538 EXPECT_EQ(MetricsLogBase::Hash("birth_thread*"), |
| 539 tracked_object->birth_thread_name_hash()); | 539 tracked_object->birth_thread_name_hash()); |
| 540 EXPECT_EQ(19, tracked_object->exec_count()); | 540 EXPECT_EQ(19, tracked_object->exec_count()); |
| 541 EXPECT_EQ(23, tracked_object->exec_time_total()); | 541 EXPECT_EQ(23, tracked_object->exec_time_total()); |
| 542 EXPECT_EQ(7, tracked_object->exec_time_sampled()); | 542 EXPECT_EQ(7, tracked_object->exec_time_sampled()); |
| 543 EXPECT_EQ(0, tracked_object->queue_time_total()); | 543 EXPECT_EQ(0, tracked_object->queue_time_total()); |
| 544 EXPECT_EQ(0, tracked_object->queue_time_sampled()); | 544 EXPECT_EQ(0, tracked_object->queue_time_sampled()); |
| 545 EXPECT_EQ(GG_UINT64_C(14275151213201158253), | 545 EXPECT_EQ(MetricsLogBase::Hash("death_thread"), |
| 546 tracked_object->exec_thread_name_hash()); | 546 tracked_object->exec_thread_name_hash()); |
| 547 EXPECT_EQ(177U, tracked_object->process_id()); | 547 EXPECT_EQ(177U, tracked_object->process_id()); |
| 548 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, | 548 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, |
| 549 tracked_object->process_type()); | 549 tracked_object->process_type()); |
| 550 } | 550 } |
| 551 | 551 |
| 552 { | 552 { |
| 553 ProcessDataSnapshot process_data; | 553 ProcessDataSnapshot process_data; |
| 554 process_data.process_id = 1177; | 554 process_data.process_id = 1177; |
| 555 process_data.tasks.push_back(TaskSnapshot()); | 555 process_data.tasks.push_back(TaskSnapshot()); |
| 556 process_data.tasks.back().birth.location.file_name = "file3"; | 556 process_data.tasks.back().birth.location.file_name = "file3"; |
| 557 process_data.tasks.back().birth.location.function_name = "function3"; | 557 process_data.tasks.back().birth.location.function_name = "function3"; |
| 558 process_data.tasks.back().birth.location.line_number = 7331; | 558 process_data.tasks.back().birth.location.line_number = 7331; |
| 559 process_data.tasks.back().birth.thread_name = "birth_thread3"; | 559 process_data.tasks.back().birth.thread_name = "birth_thread3"; |
| 560 process_data.tasks.back().death_data.count = 137; | 560 process_data.tasks.back().death_data.count = 137; |
| 561 process_data.tasks.back().death_data.run_duration_sum = 131; | 561 process_data.tasks.back().death_data.run_duration_sum = 131; |
| 562 process_data.tasks.back().death_data.run_duration_max = 117; | 562 process_data.tasks.back().death_data.run_duration_max = 117; |
| 563 process_data.tasks.back().death_data.run_duration_sample = 113; | 563 process_data.tasks.back().death_data.run_duration_sample = 113; |
| 564 process_data.tasks.back().death_data.queue_duration_sum = 108; | 564 process_data.tasks.back().death_data.queue_duration_sum = 108; |
| 565 process_data.tasks.back().death_data.queue_duration_max = 105; | 565 process_data.tasks.back().death_data.queue_duration_max = 105; |
| 566 process_data.tasks.back().death_data.queue_duration_sample = 103; | 566 process_data.tasks.back().death_data.queue_duration_sample = 103; |
| 567 process_data.tasks.back().death_thread_name = "death_thread3"; | 567 process_data.tasks.back().death_thread_name = "death_thread3"; |
| 568 process_data.tasks.push_back(TaskSnapshot()); | |
| 569 process_data.tasks.back().birth.location.file_name = ""; | |
| 570 process_data.tasks.back().birth.location.function_name = ""; | |
| 571 process_data.tasks.back().birth.location.line_number = 7332; | |
| 572 process_data.tasks.back().birth.thread_name = ""; | |
| 573 process_data.tasks.back().death_data.count = 138; | |
| 574 process_data.tasks.back().death_data.run_duration_sum = 132; | |
| 575 process_data.tasks.back().death_data.run_duration_max = 118; | |
| 576 process_data.tasks.back().death_data.run_duration_sample = 114; | |
| 577 process_data.tasks.back().death_data.queue_duration_sum = 109; | |
| 578 process_data.tasks.back().death_data.queue_duration_max = 106; | |
| 579 process_data.tasks.back().death_data.queue_duration_sample = 104; | |
| 580 process_data.tasks.back().death_thread_name = ""; | |
| 568 | 581 |
| 569 log.RecordProfilerData(process_data, content::PROCESS_TYPE_RENDERER); | 582 log.RecordProfilerData(process_data, content::PROCESS_TYPE_RENDERER); |
| 570 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); | 583 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); |
| 571 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, | 584 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, |
| 572 log.uma_proto().profiler_event(0).profile_type()); | 585 log.uma_proto().profiler_event(0).profile_type()); |
| 573 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, | 586 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, |
| 574 log.uma_proto().profiler_event(0).time_source()); | 587 log.uma_proto().profiler_event(0).time_source()); |
| 575 ASSERT_EQ(3, log.uma_proto().profiler_event(0).tracked_object_size()); | 588 ASSERT_EQ(4, log.uma_proto().profiler_event(0).tracked_object_size()); |
| 576 | 589 |
| 577 const ProfilerEventProto::TrackedObject* tracked_object = | 590 const ProfilerEventProto::TrackedObject* tracked_object = |
| 578 &log.uma_proto().profiler_event(0).tracked_object(2); | 591 &log.uma_proto().profiler_event(0).tracked_object(2); |
| 579 EXPECT_EQ(GG_UINT64_C(2686523203278102732), | 592 EXPECT_EQ(MetricsLogBase::Hash("file3"), |
|
Ilya Sherman
2014/04/02 06:56:15
IMO it's better to compare to a constant rather th
vadimt
2014/04/02 17:50:25
Replacing with metrics::HashMetricName (used in Me
Ilya Sherman
2014/04/02 22:55:16
I would still prefer to keep a numeric constant as
vadimt
2014/04/03 00:41:48
How about this?
| |
| 580 tracked_object->source_file_name_hash()); | 593 tracked_object->source_file_name_hash()); |
| 581 EXPECT_EQ(GG_UINT64_C(5081672290546182009), | 594 EXPECT_EQ(MetricsLogBase::Hash("function3"), |
| 582 tracked_object->source_function_name_hash()); | 595 tracked_object->source_function_name_hash()); |
| 583 EXPECT_EQ(7331, tracked_object->source_line_number()); | 596 EXPECT_EQ(7331, tracked_object->source_line_number()); |
| 584 EXPECT_EQ(GG_UINT64_C(1518842999910132863), | 597 EXPECT_EQ(MetricsLogBase::Hash("birth_thread*"), |
| 585 tracked_object->birth_thread_name_hash()); | 598 tracked_object->birth_thread_name_hash()); |
| 586 EXPECT_EQ(137, tracked_object->exec_count()); | 599 EXPECT_EQ(137, tracked_object->exec_count()); |
| 587 EXPECT_EQ(131, tracked_object->exec_time_total()); | 600 EXPECT_EQ(131, tracked_object->exec_time_total()); |
| 588 EXPECT_EQ(113, tracked_object->exec_time_sampled()); | 601 EXPECT_EQ(113, tracked_object->exec_time_sampled()); |
| 589 EXPECT_EQ(108, tracked_object->queue_time_total()); | 602 EXPECT_EQ(108, tracked_object->queue_time_total()); |
| 590 EXPECT_EQ(103, tracked_object->queue_time_sampled()); | 603 EXPECT_EQ(103, tracked_object->queue_time_sampled()); |
| 591 EXPECT_EQ(GG_UINT64_C(2203893603452504755), | 604 EXPECT_EQ(MetricsLogBase::Hash("death_thread*"), |
| 592 tracked_object->exec_thread_name_hash()); | 605 tracked_object->exec_thread_name_hash()); |
| 593 EXPECT_EQ(1177U, tracked_object->process_id()); | 606 EXPECT_EQ(1177U, tracked_object->process_id()); |
| 594 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER, | 607 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER, |
| 595 tracked_object->process_type()); | 608 tracked_object->process_type()); |
| 609 | |
| 610 tracked_object = &log.uma_proto().profiler_event(0).tracked_object(3); | |
| 611 EXPECT_EQ(MetricsLogBase::Hash(""), | |
| 612 tracked_object->source_file_name_hash()); | |
| 613 EXPECT_EQ(MetricsLogBase::Hash(""), | |
| 614 tracked_object->source_function_name_hash()); | |
| 615 EXPECT_EQ(7332, tracked_object->source_line_number()); | |
| 616 EXPECT_EQ(MetricsLogBase::Hash(""), | |
| 617 tracked_object->birth_thread_name_hash()); | |
| 618 EXPECT_EQ(138, tracked_object->exec_count()); | |
| 619 EXPECT_EQ(132, tracked_object->exec_time_total()); | |
| 620 EXPECT_EQ(114, tracked_object->exec_time_sampled()); | |
| 621 EXPECT_EQ(109, tracked_object->queue_time_total()); | |
| 622 EXPECT_EQ(104, tracked_object->queue_time_sampled()); | |
| 623 EXPECT_EQ(MetricsLogBase::Hash(""), | |
| 624 tracked_object->exec_thread_name_hash()); | |
| 625 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER, | |
| 626 tracked_object->process_type()); | |
| 596 } | 627 } |
| 597 } | 628 } |
| 598 | 629 |
| 599 #if defined(OS_CHROMEOS) | 630 #if defined(OS_CHROMEOS) |
| 600 TEST_F(MetricsLogTest, MultiProfileUserCount) { | 631 TEST_F(MetricsLogTest, MultiProfileUserCount) { |
| 601 std::string user1("user1@example.com"); | 632 std::string user1("user1@example.com"); |
| 602 std::string user2("user2@example.com"); | 633 std::string user2("user2@example.com"); |
| 603 std::string user3("user3@example.com"); | 634 std::string user3("user3@example.com"); |
| 604 | 635 |
| 605 // |scoped_enabler| takes over the lifetime of |user_manager|. | 636 // |scoped_enabler| takes over the lifetime of |user_manager|. |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 727 PairedDevice device2 = | 758 PairedDevice device2 = |
| 728 log.system_profile().hardware().bluetooth().paired_device(1); | 759 log.system_profile().hardware().bluetooth().paired_device(1); |
| 729 | 760 |
| 730 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass, | 761 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass, |
| 731 device2.bluetooth_class()); | 762 device2.bluetooth_class()); |
| 732 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type()); | 763 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type()); |
| 733 EXPECT_EQ(0x207D74U, device2.vendor_prefix()); | 764 EXPECT_EQ(0x207D74U, device2.vendor_prefix()); |
| 734 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source()); | 765 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source()); |
| 735 } | 766 } |
| 736 #endif // OS_CHROMEOS | 767 #endif // OS_CHROMEOS |
| OLD | NEW |