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

Side by Side Diff: chrome/common/metrics/metrics_log_base_unittest.cc

Issue 49753002: RAPPOR implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 10 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
« no previous file with comments | « chrome/common/metrics/metrics_log_base.cc ('k') | chrome/test/base/testing_browser_process.h » ('j') | 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/common/metrics/metrics_log_base.h" 5 #include "chrome/common/metrics/metrics_log_base.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/format_macros.h"
11 #include "base/metrics/bucket_ranges.h" 10 #include "base/metrics/bucket_ranges.h"
12 #include "base/metrics/sample_vector.h" 11 #include "base/metrics/sample_vector.h"
13 #include "base/strings/stringprintf.h"
14 #include "chrome/common/metrics/proto/chrome_user_metrics_extension.pb.h" 12 #include "chrome/common/metrics/proto/chrome_user_metrics_extension.pb.h"
15 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
16 14
17 namespace { 15 namespace {
18 16
19 class TestMetricsLogBase : public MetricsLogBase { 17 class TestMetricsLogBase : public MetricsLogBase {
20 public: 18 public:
21 TestMetricsLogBase() : MetricsLogBase("client_id", 1, "1.2.3.4") {} 19 TestMetricsLogBase() : MetricsLogBase("client_id", 1, "1.2.3.4") {}
22 virtual ~TestMetricsLogBase() {} 20 virtual ~TestMetricsLogBase() {}
23 21
(...skipping 25 matching lines...) Expand all
49 parsed.system_profile().build_timestamp()); 47 parsed.system_profile().build_timestamp());
50 expected.mutable_system_profile()->set_app_version("bogus version"); 48 expected.mutable_system_profile()->set_app_version("bogus version");
51 expected.mutable_system_profile()->set_channel( 49 expected.mutable_system_profile()->set_channel(
52 parsed.system_profile().channel()); 50 parsed.system_profile().channel());
53 expected.mutable_system_profile()->mutable_hardware()->set_hardware_class( 51 expected.mutable_system_profile()->mutable_hardware()->set_hardware_class(
54 "sample-class"); 52 "sample-class");
55 53
56 EXPECT_EQ(expected.SerializeAsString(), encoded); 54 EXPECT_EQ(expected.SerializeAsString(), encoded);
57 } 55 }
58 56
59 // Make sure our ID hashes are the same as what we see on the server side.
60 TEST(MetricsLogBaseTest, Hashes) {
61 static const struct {
62 std::string input;
63 std::string output;
64 } cases[] = {
65 {"Back", "0x0557fa923dcee4d0"},
66 {"Forward", "0x67d2f6740a8eaebf"},
67 {"NewTab", "0x290eb683f96572f1"},
68 };
69
70 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
71 uint64 hash = MetricsLogBase::Hash(cases[i].input);
72 std::string hash_hex = base::StringPrintf("0x%016" PRIx64, hash);
73 EXPECT_EQ(cases[i].output, hash_hex);
74 }
75 }
76
77 TEST(MetricsLogBaseTest, HistogramBucketFields) { 57 TEST(MetricsLogBaseTest, HistogramBucketFields) {
78 // Create buckets: 1-5, 5-7, 7-8, 8-9, 9-10, 10-11, 11-12. 58 // Create buckets: 1-5, 5-7, 7-8, 8-9, 9-10, 10-11, 11-12.
79 base::BucketRanges ranges(8); 59 base::BucketRanges ranges(8);
80 ranges.set_range(0, 1); 60 ranges.set_range(0, 1);
81 ranges.set_range(1, 5); 61 ranges.set_range(1, 5);
82 ranges.set_range(2, 7); 62 ranges.set_range(2, 7);
83 ranges.set_range(3, 8); 63 ranges.set_range(3, 8);
84 ranges.set_range(4, 9); 64 ranges.set_range(4, 9);
85 ranges.set_range(5, 10); 65 ranges.set_range(5, 10);
86 ranges.set_range(6, 11); 66 ranges.set_range(6, 11);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 // 10-11 becomes 10-/ (both optimizations apply, omit max is prioritized). 103 // 10-11 becomes 10-/ (both optimizations apply, omit max is prioritized).
124 EXPECT_TRUE(histogram_proto.bucket(3).has_min()); 104 EXPECT_TRUE(histogram_proto.bucket(3).has_min());
125 EXPECT_FALSE(histogram_proto.bucket(3).has_max()); 105 EXPECT_FALSE(histogram_proto.bucket(3).has_max());
126 EXPECT_EQ(10, histogram_proto.bucket(3).min()); 106 EXPECT_EQ(10, histogram_proto.bucket(3).min());
127 107
128 // 11-12 becomes /-12 (last record must keep max, min is same as max - 1). 108 // 11-12 becomes /-12 (last record must keep max, min is same as max - 1).
129 EXPECT_FALSE(histogram_proto.bucket(4).has_min()); 109 EXPECT_FALSE(histogram_proto.bucket(4).has_min());
130 EXPECT_TRUE(histogram_proto.bucket(4).has_max()); 110 EXPECT_TRUE(histogram_proto.bucket(4).has_max());
131 EXPECT_EQ(12, histogram_proto.bucket(4).max()); 111 EXPECT_EQ(12, histogram_proto.bucket(4).max());
132 } 112 }
OLDNEW
« no previous file with comments | « chrome/common/metrics/metrics_log_base.cc ('k') | chrome/test/base/testing_browser_process.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698