OLD | NEW |
| (Empty) |
1 // Copyright 2006-2009 Google Inc. | |
2 // | |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | |
4 // you may not use this file except in compliance with the License. | |
5 // You may obtain a copy of the License at | |
6 // | |
7 // http://www.apache.org/licenses/LICENSE-2.0 | |
8 // | |
9 // Unless required by applicable law or agreed to in writing, software | |
10 // distributed under the License is distributed on an "AS IS" BASIS, | |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
12 // See the License for the specific language governing permissions and | |
13 // limitations under the License. | |
14 // ======================================================================== | |
15 // | |
16 // Implementation of helper classes to aggregate the collected in-memory | |
17 // stats to persistent storage. | |
18 #include "aggregator.h" | |
19 #include "aggregator_unittest.h" | |
20 | |
21 using namespace stats_report; | |
22 | |
23 class TestMetricsAggregator: public MetricsAggregator { | |
24 public: | |
25 TestMetricsAggregator(MetricCollection &coll) : MetricsAggregator(coll) | |
26 , aggregating_(false), counts_(0), timings_(0), integers_(0), bools_(0) { | |
27 } | |
28 | |
29 ~TestMetricsAggregator() { | |
30 } | |
31 | |
32 bool aggregating() const { return aggregating_; } | |
33 int counts() const { return counts_; } | |
34 int timings() const { return timings_; } | |
35 int integers() const { return integers_; } | |
36 int bools() const { return bools_; } | |
37 | |
38 protected: | |
39 virtual bool StartAggregation() { | |
40 aggregating_ = true; | |
41 counts_ = 0; | |
42 timings_ = 0; | |
43 integers_ = 0; | |
44 bools_ = 0; | |
45 | |
46 return true; | |
47 } | |
48 | |
49 virtual void EndAggregation() { | |
50 aggregating_ = false; | |
51 } | |
52 | |
53 virtual void Aggregate(CountMetric &metric) { | |
54 EXPECT_TRUE(aggregating()); | |
55 metric.Reset(); | |
56 ++counts_; | |
57 } | |
58 | |
59 virtual void Aggregate(TimingMetric &metric) { | |
60 UNREFERENCED_PARAMETER(metric); | |
61 EXPECT_TRUE(aggregating()); | |
62 metric.Reset(); | |
63 ++timings_; | |
64 } | |
65 virtual void Aggregate(IntegerMetric &metric) { | |
66 UNREFERENCED_PARAMETER(metric); | |
67 EXPECT_TRUE(aggregating()); | |
68 // Integer metrics don't get reset on aggregation | |
69 ++integers_; | |
70 } | |
71 virtual void Aggregate(BoolMetric &metric) { | |
72 EXPECT_TRUE(aggregating()); | |
73 metric.Reset(); | |
74 ++bools_; | |
75 } | |
76 | |
77 private: | |
78 bool aggregating_; | |
79 int counts_; | |
80 int timings_; | |
81 int integers_; | |
82 int bools_; | |
83 }; | |
84 | |
85 TEST_F(MetricsAggregatorTest, Aggregate) { | |
86 TestMetricsAggregator agg(coll_); | |
87 | |
88 EXPECT_FALSE(agg.aggregating()); | |
89 EXPECT_EQ(0, agg.counts()); | |
90 EXPECT_EQ(0, agg.timings()); | |
91 EXPECT_EQ(0, agg.integers()); | |
92 EXPECT_EQ(0, agg.bools()); | |
93 EXPECT_TRUE(agg.AggregateMetrics()); | |
94 EXPECT_FALSE(agg.aggregating()); | |
95 | |
96 // check that we saw all counters. | |
97 EXPECT_TRUE(kNumCounts == agg.counts()); | |
98 EXPECT_TRUE(kNumTimings == agg.timings()); | |
99 EXPECT_TRUE(kNumIntegers == agg.integers()); | |
100 EXPECT_TRUE(kNumBools == agg.bools()); | |
101 } | |
102 | |
103 class FailureTestMetricsAggregator: public TestMetricsAggregator { | |
104 public: | |
105 FailureTestMetricsAggregator(MetricCollection &coll) : | |
106 TestMetricsAggregator(coll) { | |
107 } | |
108 | |
109 protected: | |
110 virtual bool StartAggregation() { | |
111 return false; | |
112 } | |
113 }; | |
114 | |
115 TEST_F(MetricsAggregatorTest, AggregateFailure) { | |
116 FailureTestMetricsAggregator agg(coll_); | |
117 | |
118 EXPECT_FALSE(agg.AggregateMetrics()); | |
119 } | |
OLD | NEW |