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

Side by Side Diff: chrome/browser/metrics/metrics_log_unittest.cc

Issue 217483006: Normalizing source file names before calculating hash (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebasing Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/metrics/metrics_log.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #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 10 matching lines...) Expand all
21 #include "base/time/time.h" 21 #include "base/time/time.h"
22 #include "base/tracked_objects.h" 22 #include "base/tracked_objects.h"
23 #include "chrome/browser/google/google_util.h" 23 #include "chrome/browser/google/google_util.h"
24 #include "chrome/browser/prefs/browser_prefs.h" 24 #include "chrome/browser/prefs/browser_prefs.h"
25 #include "chrome/common/chrome_switches.h" 25 #include "chrome/common/chrome_switches.h"
26 #include "chrome/common/metrics/proto/profiler_event.pb.h" 26 #include "chrome/common/metrics/proto/profiler_event.pb.h"
27 #include "chrome/common/metrics/proto/system_profile.pb.h" 27 #include "chrome/common/metrics/proto/system_profile.pb.h"
28 #include "chrome/common/metrics/variations/variations_util.h" 28 #include "chrome/common/metrics/variations/variations_util.h"
29 #include "chrome/common/pref_names.h" 29 #include "chrome/common/pref_names.h"
30 #include "chrome/installer/util/google_update_settings.h" 30 #include "chrome/installer/util/google_update_settings.h"
31 #include "components/metrics/metrics_hashes.h"
31 #include "components/variations/metrics_util.h" 32 #include "components/variations/metrics_util.h"
32 #include "content/public/browser/browser_thread.h" 33 #include "content/public/browser/browser_thread.h"
33 #include "content/public/common/process_type.h" 34 #include "content/public/common/process_type.h"
34 #include "content/public/common/webplugininfo.h" 35 #include "content/public/common/webplugininfo.h"
35 #include "content/public/test/test_browser_thread_bundle.h" 36 #include "content/public/test/test_browser_thread_bundle.h"
36 #include "content/public/test/test_utils.h" 37 #include "content/public/test/test_utils.h"
37 #include "testing/gtest/include/gtest/gtest.h" 38 #include "testing/gtest/include/gtest/gtest.h"
38 #include "ui/gfx/size.h" 39 #include "ui/gfx/size.h"
39 #include "url/gurl.h" 40 #include "url/gurl.h"
40 41
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 EXPECT_FALSE(stability.plugin_stability(0).plugin().is_pepper()); 461 EXPECT_FALSE(stability.plugin_stability(0).plugin().is_pepper());
461 EXPECT_EQ(1, stability.plugin_stability(0).launch_count()); 462 EXPECT_EQ(1, stability.plugin_stability(0).launch_count());
462 EXPECT_EQ(2, stability.plugin_stability(0).crash_count()); 463 EXPECT_EQ(2, stability.plugin_stability(0).crash_count());
463 EXPECT_EQ(3, stability.plugin_stability(0).instance_count()); 464 EXPECT_EQ(3, stability.plugin_stability(0).instance_count());
464 EXPECT_EQ(4, stability.plugin_stability(0).loading_error_count()); 465 EXPECT_EQ(4, stability.plugin_stability(0).loading_error_count());
465 } 466 }
466 #endif // defined(ENABLE_PLUGINS) 467 #endif // defined(ENABLE_PLUGINS)
467 468
468 // Test that we properly write profiler data to the log. 469 // Test that we properly write profiler data to the log.
469 TEST_F(MetricsLogTest, RecordProfilerData) { 470 TEST_F(MetricsLogTest, RecordProfilerData) {
471 // WARNING: If you broke the below check, you've modified how
472 // metrics::HashMetricName works. Please also modify all server-side code that
473 // relies on the existing way of hashing.
474 EXPECT_EQ(GG_UINT64_C(1518842999910132863),
475 metrics::HashMetricName("birth_thread*"));
476
470 TestMetricsLog log(kClientId, kSessionId); 477 TestMetricsLog log(kClientId, kSessionId);
471 EXPECT_EQ(0, log.uma_proto().profiler_event_size()); 478 EXPECT_EQ(0, log.uma_proto().profiler_event_size());
472 479
473 { 480 {
474 ProcessDataSnapshot process_data; 481 ProcessDataSnapshot process_data;
475 process_data.process_id = 177; 482 process_data.process_id = 177;
476 process_data.tasks.push_back(TaskSnapshot()); 483 process_data.tasks.push_back(TaskSnapshot());
477 process_data.tasks.back().birth.location.file_name = "file"; 484 process_data.tasks.back().birth.location.file_name = "a/b/file.h";
478 process_data.tasks.back().birth.location.function_name = "function"; 485 process_data.tasks.back().birth.location.function_name = "function";
479 process_data.tasks.back().birth.location.line_number = 1337; 486 process_data.tasks.back().birth.location.line_number = 1337;
480 process_data.tasks.back().birth.thread_name = "birth_thread"; 487 process_data.tasks.back().birth.thread_name = "birth_thread";
481 process_data.tasks.back().death_data.count = 37; 488 process_data.tasks.back().death_data.count = 37;
482 process_data.tasks.back().death_data.run_duration_sum = 31; 489 process_data.tasks.back().death_data.run_duration_sum = 31;
483 process_data.tasks.back().death_data.run_duration_max = 17; 490 process_data.tasks.back().death_data.run_duration_max = 17;
484 process_data.tasks.back().death_data.run_duration_sample = 13; 491 process_data.tasks.back().death_data.run_duration_sample = 13;
485 process_data.tasks.back().death_data.queue_duration_sum = 8; 492 process_data.tasks.back().death_data.queue_duration_sum = 8;
486 process_data.tasks.back().death_data.queue_duration_max = 5; 493 process_data.tasks.back().death_data.queue_duration_max = 5;
487 process_data.tasks.back().death_data.queue_duration_sample = 3; 494 process_data.tasks.back().death_data.queue_duration_sample = 3;
488 process_data.tasks.back().death_thread_name = "Still_Alive"; 495 process_data.tasks.back().death_thread_name = "Still_Alive";
489 process_data.tasks.push_back(TaskSnapshot()); 496 process_data.tasks.push_back(TaskSnapshot());
490 process_data.tasks.back().birth.location.file_name = "file2"; 497 process_data.tasks.back().birth.location.file_name = "c\\d\\file2";
491 process_data.tasks.back().birth.location.function_name = "function2"; 498 process_data.tasks.back().birth.location.function_name = "function2";
492 process_data.tasks.back().birth.location.line_number = 1773; 499 process_data.tasks.back().birth.location.line_number = 1773;
493 process_data.tasks.back().birth.thread_name = "birth_thread2"; 500 process_data.tasks.back().birth.thread_name = "birth_thread2";
494 process_data.tasks.back().death_data.count = 19; 501 process_data.tasks.back().death_data.count = 19;
495 process_data.tasks.back().death_data.run_duration_sum = 23; 502 process_data.tasks.back().death_data.run_duration_sum = 23;
496 process_data.tasks.back().death_data.run_duration_max = 11; 503 process_data.tasks.back().death_data.run_duration_max = 11;
497 process_data.tasks.back().death_data.run_duration_sample = 7; 504 process_data.tasks.back().death_data.run_duration_sample = 7;
498 process_data.tasks.back().death_data.queue_duration_sum = 0; 505 process_data.tasks.back().death_data.queue_duration_sum = 0;
499 process_data.tasks.back().death_data.queue_duration_max = 0; 506 process_data.tasks.back().death_data.queue_duration_max = 0;
500 process_data.tasks.back().death_data.queue_duration_sample = 0; 507 process_data.tasks.back().death_data.queue_duration_sample = 0;
501 process_data.tasks.back().death_thread_name = "death_thread"; 508 process_data.tasks.back().death_thread_name = "death_thread";
502 509
503 log.RecordProfilerData(process_data, content::PROCESS_TYPE_BROWSER); 510 log.RecordProfilerData(process_data, content::PROCESS_TYPE_BROWSER);
504 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); 511 ASSERT_EQ(1, log.uma_proto().profiler_event_size());
505 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, 512 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE,
506 log.uma_proto().profiler_event(0).profile_type()); 513 log.uma_proto().profiler_event(0).profile_type());
507 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, 514 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME,
508 log.uma_proto().profiler_event(0).time_source()); 515 log.uma_proto().profiler_event(0).time_source());
509 516
510 ASSERT_EQ(2, log.uma_proto().profiler_event(0).tracked_object_size()); 517 ASSERT_EQ(2, log.uma_proto().profiler_event(0).tracked_object_size());
511 518
512 const ProfilerEventProto::TrackedObject* tracked_object = 519 const ProfilerEventProto::TrackedObject* tracked_object =
513 &log.uma_proto().profiler_event(0).tracked_object(0); 520 &log.uma_proto().profiler_event(0).tracked_object(0);
514 EXPECT_EQ(GG_UINT64_C(10123486280357988687), 521 EXPECT_EQ(metrics::HashMetricName("file.h"),
515 tracked_object->source_file_name_hash()); 522 tracked_object->source_file_name_hash());
516 EXPECT_EQ(GG_UINT64_C(13962325592283560029), 523 EXPECT_EQ(metrics::HashMetricName("function"),
517 tracked_object->source_function_name_hash()); 524 tracked_object->source_function_name_hash());
518 EXPECT_EQ(1337, tracked_object->source_line_number()); 525 EXPECT_EQ(1337, tracked_object->source_line_number());
519 EXPECT_EQ(GG_UINT64_C(3400908935414830400), 526 EXPECT_EQ(metrics::HashMetricName("birth_thread"),
520 tracked_object->birth_thread_name_hash()); 527 tracked_object->birth_thread_name_hash());
521 EXPECT_EQ(37, tracked_object->exec_count()); 528 EXPECT_EQ(37, tracked_object->exec_count());
522 EXPECT_EQ(31, tracked_object->exec_time_total()); 529 EXPECT_EQ(31, tracked_object->exec_time_total());
523 EXPECT_EQ(13, tracked_object->exec_time_sampled()); 530 EXPECT_EQ(13, tracked_object->exec_time_sampled());
524 EXPECT_EQ(8, tracked_object->queue_time_total()); 531 EXPECT_EQ(8, tracked_object->queue_time_total());
525 EXPECT_EQ(3, tracked_object->queue_time_sampled()); 532 EXPECT_EQ(3, tracked_object->queue_time_sampled());
526 EXPECT_EQ(GG_UINT64_C(10151977472163283085), 533 EXPECT_EQ(metrics::HashMetricName("Still_Alive"),
527 tracked_object->exec_thread_name_hash()); 534 tracked_object->exec_thread_name_hash());
528 EXPECT_EQ(177U, tracked_object->process_id()); 535 EXPECT_EQ(177U, tracked_object->process_id());
529 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, 536 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER,
530 tracked_object->process_type()); 537 tracked_object->process_type());
531 538
532 tracked_object = &log.uma_proto().profiler_event(0).tracked_object(1); 539 tracked_object = &log.uma_proto().profiler_event(0).tracked_object(1);
533 EXPECT_EQ(GG_UINT64_C(2025659946535236365), 540 EXPECT_EQ(metrics::HashMetricName("file2"),
534 tracked_object->source_file_name_hash()); 541 tracked_object->source_file_name_hash());
535 EXPECT_EQ(GG_UINT64_C(55232426147951219), 542 EXPECT_EQ(metrics::HashMetricName("function2"),
536 tracked_object->source_function_name_hash()); 543 tracked_object->source_function_name_hash());
537 EXPECT_EQ(1773, tracked_object->source_line_number()); 544 EXPECT_EQ(1773, tracked_object->source_line_number());
538 EXPECT_EQ(GG_UINT64_C(1518842999910132863), 545 EXPECT_EQ(metrics::HashMetricName("birth_thread*"),
539 tracked_object->birth_thread_name_hash()); 546 tracked_object->birth_thread_name_hash());
540 EXPECT_EQ(19, tracked_object->exec_count()); 547 EXPECT_EQ(19, tracked_object->exec_count());
541 EXPECT_EQ(23, tracked_object->exec_time_total()); 548 EXPECT_EQ(23, tracked_object->exec_time_total());
542 EXPECT_EQ(7, tracked_object->exec_time_sampled()); 549 EXPECT_EQ(7, tracked_object->exec_time_sampled());
543 EXPECT_EQ(0, tracked_object->queue_time_total()); 550 EXPECT_EQ(0, tracked_object->queue_time_total());
544 EXPECT_EQ(0, tracked_object->queue_time_sampled()); 551 EXPECT_EQ(0, tracked_object->queue_time_sampled());
545 EXPECT_EQ(GG_UINT64_C(14275151213201158253), 552 EXPECT_EQ(metrics::HashMetricName("death_thread"),
546 tracked_object->exec_thread_name_hash()); 553 tracked_object->exec_thread_name_hash());
547 EXPECT_EQ(177U, tracked_object->process_id()); 554 EXPECT_EQ(177U, tracked_object->process_id());
548 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, 555 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER,
549 tracked_object->process_type()); 556 tracked_object->process_type());
550 } 557 }
551 558
552 { 559 {
553 ProcessDataSnapshot process_data; 560 ProcessDataSnapshot process_data;
554 process_data.process_id = 1177; 561 process_data.process_id = 1177;
555 process_data.tasks.push_back(TaskSnapshot()); 562 process_data.tasks.push_back(TaskSnapshot());
556 process_data.tasks.back().birth.location.file_name = "file3"; 563 process_data.tasks.back().birth.location.file_name = "file3";
557 process_data.tasks.back().birth.location.function_name = "function3"; 564 process_data.tasks.back().birth.location.function_name = "function3";
558 process_data.tasks.back().birth.location.line_number = 7331; 565 process_data.tasks.back().birth.location.line_number = 7331;
559 process_data.tasks.back().birth.thread_name = "birth_thread3"; 566 process_data.tasks.back().birth.thread_name = "birth_thread3";
560 process_data.tasks.back().death_data.count = 137; 567 process_data.tasks.back().death_data.count = 137;
561 process_data.tasks.back().death_data.run_duration_sum = 131; 568 process_data.tasks.back().death_data.run_duration_sum = 131;
562 process_data.tasks.back().death_data.run_duration_max = 117; 569 process_data.tasks.back().death_data.run_duration_max = 117;
563 process_data.tasks.back().death_data.run_duration_sample = 113; 570 process_data.tasks.back().death_data.run_duration_sample = 113;
564 process_data.tasks.back().death_data.queue_duration_sum = 108; 571 process_data.tasks.back().death_data.queue_duration_sum = 108;
565 process_data.tasks.back().death_data.queue_duration_max = 105; 572 process_data.tasks.back().death_data.queue_duration_max = 105;
566 process_data.tasks.back().death_data.queue_duration_sample = 103; 573 process_data.tasks.back().death_data.queue_duration_sample = 103;
567 process_data.tasks.back().death_thread_name = "death_thread3"; 574 process_data.tasks.back().death_thread_name = "death_thread3";
575 process_data.tasks.push_back(TaskSnapshot());
576 process_data.tasks.back().birth.location.file_name = "";
577 process_data.tasks.back().birth.location.function_name = "";
578 process_data.tasks.back().birth.location.line_number = 7332;
579 process_data.tasks.back().birth.thread_name = "";
580 process_data.tasks.back().death_data.count = 138;
581 process_data.tasks.back().death_data.run_duration_sum = 132;
582 process_data.tasks.back().death_data.run_duration_max = 118;
583 process_data.tasks.back().death_data.run_duration_sample = 114;
584 process_data.tasks.back().death_data.queue_duration_sum = 109;
585 process_data.tasks.back().death_data.queue_duration_max = 106;
586 process_data.tasks.back().death_data.queue_duration_sample = 104;
587 process_data.tasks.back().death_thread_name = "";
568 588
569 log.RecordProfilerData(process_data, content::PROCESS_TYPE_RENDERER); 589 log.RecordProfilerData(process_data, content::PROCESS_TYPE_RENDERER);
570 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); 590 ASSERT_EQ(1, log.uma_proto().profiler_event_size());
571 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, 591 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE,
572 log.uma_proto().profiler_event(0).profile_type()); 592 log.uma_proto().profiler_event(0).profile_type());
573 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, 593 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME,
574 log.uma_proto().profiler_event(0).time_source()); 594 log.uma_proto().profiler_event(0).time_source());
575 ASSERT_EQ(3, log.uma_proto().profiler_event(0).tracked_object_size()); 595 ASSERT_EQ(4, log.uma_proto().profiler_event(0).tracked_object_size());
576 596
577 const ProfilerEventProto::TrackedObject* tracked_object = 597 const ProfilerEventProto::TrackedObject* tracked_object =
578 &log.uma_proto().profiler_event(0).tracked_object(2); 598 &log.uma_proto().profiler_event(0).tracked_object(2);
579 EXPECT_EQ(GG_UINT64_C(2686523203278102732), 599 EXPECT_EQ(metrics::HashMetricName("file3"),
580 tracked_object->source_file_name_hash()); 600 tracked_object->source_file_name_hash());
581 EXPECT_EQ(GG_UINT64_C(5081672290546182009), 601 EXPECT_EQ(metrics::HashMetricName("function3"),
582 tracked_object->source_function_name_hash()); 602 tracked_object->source_function_name_hash());
583 EXPECT_EQ(7331, tracked_object->source_line_number()); 603 EXPECT_EQ(7331, tracked_object->source_line_number());
584 EXPECT_EQ(GG_UINT64_C(1518842999910132863), 604 EXPECT_EQ(metrics::HashMetricName("birth_thread*"),
585 tracked_object->birth_thread_name_hash()); 605 tracked_object->birth_thread_name_hash());
586 EXPECT_EQ(137, tracked_object->exec_count()); 606 EXPECT_EQ(137, tracked_object->exec_count());
587 EXPECT_EQ(131, tracked_object->exec_time_total()); 607 EXPECT_EQ(131, tracked_object->exec_time_total());
588 EXPECT_EQ(113, tracked_object->exec_time_sampled()); 608 EXPECT_EQ(113, tracked_object->exec_time_sampled());
589 EXPECT_EQ(108, tracked_object->queue_time_total()); 609 EXPECT_EQ(108, tracked_object->queue_time_total());
590 EXPECT_EQ(103, tracked_object->queue_time_sampled()); 610 EXPECT_EQ(103, tracked_object->queue_time_sampled());
591 EXPECT_EQ(GG_UINT64_C(2203893603452504755), 611 EXPECT_EQ(metrics::HashMetricName("death_thread*"),
592 tracked_object->exec_thread_name_hash()); 612 tracked_object->exec_thread_name_hash());
593 EXPECT_EQ(1177U, tracked_object->process_id()); 613 EXPECT_EQ(1177U, tracked_object->process_id());
594 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER, 614 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER,
595 tracked_object->process_type()); 615 tracked_object->process_type());
616
617 tracked_object = &log.uma_proto().profiler_event(0).tracked_object(3);
618 EXPECT_EQ(metrics::HashMetricName(""),
619 tracked_object->source_file_name_hash());
620 EXPECT_EQ(metrics::HashMetricName(""),
621 tracked_object->source_function_name_hash());
622 EXPECT_EQ(7332, tracked_object->source_line_number());
623 EXPECT_EQ(metrics::HashMetricName(""),
624 tracked_object->birth_thread_name_hash());
625 EXPECT_EQ(138, tracked_object->exec_count());
626 EXPECT_EQ(132, tracked_object->exec_time_total());
627 EXPECT_EQ(114, tracked_object->exec_time_sampled());
628 EXPECT_EQ(109, tracked_object->queue_time_total());
629 EXPECT_EQ(104, tracked_object->queue_time_sampled());
630 EXPECT_EQ(metrics::HashMetricName(""),
631 tracked_object->exec_thread_name_hash());
632 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER,
633 tracked_object->process_type());
596 } 634 }
597 } 635 }
598 636
599 #if defined(OS_CHROMEOS) 637 #if defined(OS_CHROMEOS)
600 TEST_F(MetricsLogTest, MultiProfileUserCount) { 638 TEST_F(MetricsLogTest, MultiProfileUserCount) {
601 std::string user1("user1@example.com"); 639 std::string user1("user1@example.com");
602 std::string user2("user2@example.com"); 640 std::string user2("user2@example.com");
603 std::string user3("user3@example.com"); 641 std::string user3("user3@example.com");
604 642
605 // |scoped_enabler| takes over the lifetime of |user_manager|. 643 // |scoped_enabler| takes over the lifetime of |user_manager|.
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 PairedDevice device2 = 765 PairedDevice device2 =
728 log.system_profile().hardware().bluetooth().paired_device(1); 766 log.system_profile().hardware().bluetooth().paired_device(1);
729 767
730 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass, 768 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass,
731 device2.bluetooth_class()); 769 device2.bluetooth_class());
732 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type()); 770 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type());
733 EXPECT_EQ(0x207D74U, device2.vendor_prefix()); 771 EXPECT_EQ(0x207D74U, device2.vendor_prefix());
734 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source()); 772 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source());
735 } 773 }
736 #endif // OS_CHROMEOS 774 #endif // OS_CHROMEOS
OLDNEW
« no previous file with comments | « chrome/browser/metrics/metrics_log.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698