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 |