OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include <vector> | |
6 | |
7 #include "base/metrics/histogram.h" | |
8 #include "base/metrics/histogram_base.h" | |
9 #include "base/metrics/sparse_histogram.h" | |
10 #include "base/metrics/statistics_recorder.h" | |
11 #include "base/pickle.h" | |
12 #include "testing/gtest/include/gtest/gtest.h" | |
13 | |
14 namespace base { | |
15 | |
16 class HistogramBaseTest : public testing::Test { | |
17 protected: | |
18 virtual void SetUp() { | |
Ilya Sherman
2012/12/29 00:17:30
nit: OVERRIDE
kaiwang
2013/01/08 00:51:40
changed to constructor
| |
19 // Each test will have a clean state (no Histogram / BucketRanges | |
20 // registered). | |
21 statistics_recorder_ = NULL; | |
22 ResetStatisticsRecorder(); | |
23 } | |
Ilya Sherman
2012/12/29 00:17:30
nit: Why not do this in the constructor?
kaiwang
2013/01/08 00:51:40
Done.
| |
24 | |
25 virtual void TearDown() { | |
Ilya Sherman
2012/12/29 00:17:30
nit: OVERRIDE
kaiwang
2013/01/08 00:51:40
changed to destructor
| |
26 delete statistics_recorder_; | |
27 } | |
28 | |
29 void ResetStatisticsRecorder() { | |
30 delete statistics_recorder_; | |
31 statistics_recorder_ = new StatisticsRecorder(); | |
32 } | |
33 | |
34 private: | |
35 StatisticsRecorder* statistics_recorder_; | |
Ilya Sherman
2012/12/29 00:17:30
nit: Please make this a scoped_ptr<>
kaiwang
2013/01/08 00:51:40
StatisticsRecorder constructor is private...
Ilya Sherman
2013/01/08 22:31:53
Yuck. Ok.
| |
36 }; | |
37 | |
38 TEST_F(HistogramBaseTest, DeserializeHistogram) { | |
39 HistogramBase* histogram = Histogram::FactoryGet( | |
40 "TestHistogram", 1, 1000, 10, | |
41 (HistogramBase::kUmaTargetedHistogramFlag | | |
42 HistogramBase::kIPCSerializationSourceFlag)); | |
43 | |
44 Pickle pickle; | |
45 ASSERT_TRUE(histogram->SerializeInfo(&pickle)); | |
46 | |
47 PickleIterator iter(pickle); | |
48 HistogramBase* deserialized = HistogramBase::DeserializeHistogramInfo(&iter); | |
49 EXPECT_EQ(histogram, deserialized); | |
50 | |
51 ResetStatisticsRecorder(); | |
52 | |
53 PickleIterator iter2(pickle); | |
54 deserialized = HistogramBase::DeserializeHistogramInfo(&iter2); | |
55 EXPECT_TRUE(deserialized); | |
56 EXPECT_NE(histogram, deserialized); | |
57 EXPECT_EQ("TestHistogram", deserialized->histogram_name()); | |
58 EXPECT_TRUE(deserialized->HasConstructionArguments(1, 1000, 10)); | |
59 | |
60 // kIPCSerializationSourceFlag will be cleared. | |
61 EXPECT_EQ(HistogramBase::kUmaTargetedHistogramFlag, deserialized->flags()); | |
62 } | |
63 | |
64 TEST_F(HistogramBaseTest, DeserializeLinearHistogram) { | |
65 HistogramBase* histogram = LinearHistogram::FactoryGet( | |
66 "TestHistogram", 1, 1000, 10, | |
67 HistogramBase::kIPCSerializationSourceFlag); | |
68 | |
69 Pickle pickle; | |
70 ASSERT_TRUE(histogram->SerializeInfo(&pickle)); | |
71 | |
72 PickleIterator iter(pickle); | |
73 HistogramBase* deserialized = HistogramBase::DeserializeHistogramInfo(&iter); | |
74 EXPECT_EQ(histogram, deserialized); | |
75 | |
76 ResetStatisticsRecorder(); | |
77 | |
78 PickleIterator iter2(pickle); | |
79 deserialized = HistogramBase::DeserializeHistogramInfo(&iter2); | |
80 EXPECT_TRUE(deserialized); | |
81 EXPECT_NE(histogram, deserialized); | |
82 EXPECT_EQ("TestHistogram", deserialized->histogram_name()); | |
83 EXPECT_TRUE(deserialized->HasConstructionArguments(1, 1000, 10)); | |
84 EXPECT_EQ(0, deserialized->flags()); | |
85 } | |
86 | |
87 TEST_F(HistogramBaseTest, DeserializeBooleanHistogram) { | |
88 HistogramBase* histogram = BooleanHistogram::FactoryGet( | |
89 "TestHistogram", HistogramBase::kIPCSerializationSourceFlag); | |
90 | |
91 Pickle pickle; | |
92 ASSERT_TRUE(histogram->SerializeInfo(&pickle)); | |
93 | |
94 PickleIterator iter(pickle); | |
95 HistogramBase* deserialized = HistogramBase::DeserializeHistogramInfo(&iter); | |
96 EXPECT_EQ(histogram, deserialized); | |
97 | |
98 ResetStatisticsRecorder(); | |
99 | |
100 PickleIterator iter2(pickle); | |
101 deserialized = HistogramBase::DeserializeHistogramInfo(&iter2); | |
102 EXPECT_TRUE(deserialized); | |
103 EXPECT_NE(histogram, deserialized); | |
104 EXPECT_EQ("TestHistogram", deserialized->histogram_name()); | |
105 EXPECT_TRUE(deserialized->HasConstructionArguments(1, 2, 3)); | |
106 EXPECT_EQ(0, deserialized->flags()); | |
107 } | |
108 | |
109 TEST_F(HistogramBaseTest, DeserializeCustomHistogram) { | |
110 std::vector<HistogramBase::Sample> ranges; | |
111 ranges.push_back(13); | |
112 ranges.push_back(5); | |
113 ranges.push_back(9); | |
114 | |
115 HistogramBase* histogram = CustomHistogram::FactoryGet( | |
116 "TestHistogram", ranges, HistogramBase::kIPCSerializationSourceFlag); | |
117 | |
118 Pickle pickle; | |
119 ASSERT_TRUE(histogram->SerializeInfo(&pickle)); | |
120 | |
121 PickleIterator iter(pickle); | |
122 HistogramBase* deserialized = HistogramBase::DeserializeHistogramInfo(&iter); | |
123 EXPECT_EQ(histogram, deserialized); | |
124 | |
125 ResetStatisticsRecorder(); | |
126 | |
127 PickleIterator iter2(pickle); | |
128 deserialized = HistogramBase::DeserializeHistogramInfo(&iter2); | |
129 EXPECT_TRUE(deserialized); | |
130 EXPECT_NE(histogram, deserialized); | |
131 EXPECT_EQ("TestHistogram", deserialized->histogram_name()); | |
132 EXPECT_TRUE(deserialized->HasConstructionArguments(5, 13, 4)); | |
133 EXPECT_EQ(0, deserialized->flags()); | |
134 } | |
135 | |
136 // TODO(kaiwang): Add SparseHistogram test. | |
137 | |
138 } // namespace base | |
OLD | NEW |