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

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: Second round of comments. 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
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 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW
« chrome/browser/metrics/metrics_log.cc ('K') | « chrome/browser/metrics/metrics_log.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698