Skip to content
This repository was archived by the owner on Jul 31, 2023. It is now read-only.

Commit 29e96d4

Browse files
author
Ian Sturdy
authored
Remove MeasureData::Add(), only used in tests. (#142)
1 parent 562efc5 commit 29e96d4

File tree

6 files changed

+49
-82
lines changed

6 files changed

+49
-82
lines changed

opencensus/stats/internal/measure_data.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,14 @@ void MeasureData::AddToDistribution(const BucketBoundaries& boundaries,
7777
*count = new_count;
7878
*mean = new_mean;
7979

80-
*min = std::min(*min, min_);
81-
*max = std::max(*max, max_);
80+
if (*count == count_) {
81+
// Overwrite in case the destination was zero-initialized.
82+
*min = min_;
83+
*max = max_;
84+
} else {
85+
*min = std::min(*min, min_);
86+
*max = std::max(*max, max_);
87+
}
8288

8389
int histogram_index =
8490
std::find(boundaries_.begin(), boundaries_.end(), boundaries) -

opencensus/stats/internal/measure_data.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class MeasureData final {
5151
absl::Span<T> histogram_buckets) const;
5252

5353
private:
54-
absl::Span<const BucketBoundaries> boundaries_;
54+
const absl::Span<const BucketBoundaries> boundaries_;
5555

5656
uint64_t count_ = 0;
5757
double mean_ = 0;

opencensus/stats/internal/view_data_impl.cc

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -167,56 +167,6 @@ ViewDataImpl::ViewDataImpl(const ViewDataImpl& other)
167167
}
168168
}
169169

170-
void ViewDataImpl::Add(double value, const std::vector<std::string>& tag_values,
171-
absl::Time now) {
172-
end_time_ = std::max(end_time_, now);
173-
switch (type_) {
174-
case Type::kDouble: {
175-
double_data_[tag_values] += value;
176-
break;
177-
}
178-
case Type::kInt64: {
179-
int_data_[tag_values] +=
180-
(aggregation_.type() == Aggregation::Type::kSum ? value : 1);
181-
break;
182-
}
183-
case Type::kDistribution: {
184-
DataMap<Distribution>::iterator it = distribution_data_.find(tag_values);
185-
if (it == distribution_data_.end()) {
186-
it = distribution_data_.emplace_hint(
187-
it, tag_values, Distribution(&aggregation_.bucket_boundaries()));
188-
}
189-
it->second.Add(value);
190-
break;
191-
}
192-
case Type::kStatsObject: {
193-
DataMap<IntervalStatsObject>::iterator it =
194-
interval_data_.find(tag_values);
195-
if (aggregation_.type() == Aggregation::Type::kDistribution) {
196-
const auto& buckets = aggregation_.bucket_boundaries();
197-
if (it == interval_data_.end()) {
198-
it = interval_data_.emplace_hint(
199-
it, std::piecewise_construct, std::make_tuple(tag_values),
200-
std::make_tuple(buckets.num_buckets() + 5,
201-
aggregation_window_.duration(), now));
202-
}
203-
it->second.AddToDistribution(value, buckets.BucketForValue(value), now);
204-
} else {
205-
if (it == interval_data_.end()) {
206-
it = interval_data_.emplace_hint(
207-
it, std::piecewise_construct, std::make_tuple(tag_values),
208-
std::make_tuple(1, aggregation_window_.duration(), now));
209-
}
210-
if (aggregation_ == Aggregation::Count()) {
211-
it->second.MutableCurrentBucket(now)[0] += 1.0;
212-
} else {
213-
it->second.MutableCurrentBucket(now)[0] += value;
214-
}
215-
}
216-
}
217-
}
218-
}
219-
220170
void ViewDataImpl::Merge(const std::vector<std::string>& tag_values,
221171
const MeasureData& data, absl::Time now) {
222172
end_time_ = std::max(end_time_, now);

opencensus/stats/internal/view_data_impl.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,6 @@ class ViewDataImpl {
106106
absl::Time start_time() const { return start_time_; }
107107
absl::Time end_time() const { return end_time_; }
108108

109-
// Adds data for the given tag values at 'now'. tag_values must be ordered
110-
// according to the order of keys in the ViewDescriptor.
111-
// TODO: Change to take Span<string_view> when heterogenous lookup is
112-
// supported.
113-
void Add(double value, const std::vector<std::string>& tag_values,
114-
absl::Time now);
115-
116109
// Merges bulk data for the given tag values at 'now'. tag_values must be
117110
// ordered according to the order of keys in the ViewDescriptor.
118111
// TODO: Change to take Span<string_view> when heterogenous lookup is

opencensus/stats/internal/view_data_impl_test.cc

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ namespace opencensus {
3030
namespace stats {
3131
namespace {
3232

33+
void AddToViewDataImpl(double value, const std::vector<std::string>& tags,
34+
absl::Time time,
35+
const std::vector<BucketBoundaries>& boundaries,
36+
ViewDataImpl* data) {
37+
MeasureData measure_data = MeasureData(boundaries);
38+
measure_data.Add(value);
39+
data->Merge(tags, measure_data, time);
40+
}
41+
3342
TEST(ViewDataImplTest, Sum) {
3443
const absl::Time start_time = absl::UnixEpoch();
3544
const absl::Time end_time = absl::UnixEpoch() + absl::Seconds(1);
@@ -38,9 +47,9 @@ TEST(ViewDataImplTest, Sum) {
3847
const std::vector<std::string> tags1({"value1", "value2a"});
3948
const std::vector<std::string> tags2({"value1", "value2b"});
4049

41-
data.Add(1, tags1, start_time);
42-
data.Add(2, tags1, start_time);
43-
data.Add(5, tags2, end_time);
50+
AddToViewDataImpl(1, tags1, start_time, {}, &data);
51+
AddToViewDataImpl(2, tags1, start_time, {}, &data);
52+
AddToViewDataImpl(5, tags2, end_time, {}, &data);
4453

4554
EXPECT_EQ(Aggregation::Sum(), data.aggregation());
4655
EXPECT_EQ(AggregationWindow::Cumulative(), data.aggregation_window());
@@ -60,9 +69,9 @@ TEST(ViewDataImplTest, Count) {
6069
const std::vector<std::string> tags1({"value1", "value2a"});
6170
const std::vector<std::string> tags2({"value1", "value2b"});
6271

63-
data.Add(1, tags1, start_time);
64-
data.Add(2, tags1, start_time);
65-
data.Add(5, tags2, end_time);
72+
AddToViewDataImpl(1, tags1, start_time, {}, &data);
73+
AddToViewDataImpl(2, tags1, start_time, {}, &data);
74+
AddToViewDataImpl(5, tags2, end_time, {}, &data);
6675

6776
EXPECT_EQ(Aggregation::Count(), data.aggregation());
6877
EXPECT_EQ(AggregationWindow::Cumulative(), data.aggregation_window());
@@ -83,9 +92,9 @@ TEST(ViewDataImplTest, Distribution) {
8392
const std::vector<std::string> tags1({"value1", "value2a"});
8493
const std::vector<std::string> tags2({"value1", "value2b"});
8594

86-
data.Add(1, tags1, start_time);
87-
data.Add(5, tags1, end_time);
88-
data.Add(15, tags2, end_time);
95+
AddToViewDataImpl(1, tags1, start_time, {buckets}, &data);
96+
AddToViewDataImpl(5, tags1, end_time, {buckets}, &data);
97+
AddToViewDataImpl(15, tags2, end_time, {buckets}, &data);
8998

9099
EXPECT_EQ(Aggregation::Distribution(buckets), data.aggregation());
91100
EXPECT_EQ(AggregationWindow::Cumulative(), data.aggregation_window());
@@ -108,11 +117,11 @@ TEST(ViewDataImplTest, StatsObjectToCount) {
108117
const std::vector<std::string> tags1({"value1", "value2a"});
109118
const std::vector<std::string> tags2({"value1", "value2b"});
110119

111-
data.Add(1, tags1, time);
112-
data.Add(2, tags1, time);
113-
data.Add(2, tags2, time);
120+
AddToViewDataImpl(1, tags1, time, {}, &data);
121+
AddToViewDataImpl(2, tags1, time, {}, &data);
122+
AddToViewDataImpl(2, tags2, time, {}, &data);
114123
time += interval / 2;
115-
data.Add(1, tags1, time);
124+
AddToViewDataImpl(1, tags1, time, {}, &data);
116125

117126
const ViewDataImpl export_data1(data, time);
118127
EXPECT_EQ(Aggregation::Count(), export_data1.aggregation());
@@ -143,11 +152,11 @@ TEST(ViewDataImplTest, StatsObjectToSum) {
143152
const std::vector<std::string> tags1({"value1", "value2a"});
144153
const std::vector<std::string> tags2({"value1", "value2b"});
145154

146-
data.Add(1, tags1, time);
147-
data.Add(3, tags1, time);
148-
data.Add(2, tags2, time);
155+
AddToViewDataImpl(1, tags1, time, {}, &data);
156+
AddToViewDataImpl(3, tags1, time, {}, &data);
157+
AddToViewDataImpl(2, tags2, time, {}, &data);
149158
time += interval / 2;
150-
data.Add(2, tags1, time);
159+
AddToViewDataImpl(2, tags1, time, {}, &data);
151160

152161
const ViewDataImpl export_data1(data, time);
153162
EXPECT_EQ(Aggregation::Sum(), export_data1.aggregation());
@@ -180,11 +189,11 @@ TEST(ViewDataImplTest, StatsObjectToDistribution) {
180189
const std::vector<std::string> tags1({"value1", "value2a"});
181190
const std::vector<std::string> tags2({"value1", "value2b"});
182191

183-
data.Add(5, tags1, time);
184-
data.Add(15, tags1, time);
185-
data.Add(0, tags2, time);
192+
AddToViewDataImpl(5, tags1, time, {buckets}, &data);
193+
AddToViewDataImpl(15, tags1, time, {buckets}, &data);
194+
AddToViewDataImpl(0, tags2, time, {buckets}, &data);
186195
time += interval / 2;
187-
data.Add(10, tags1, time);
196+
AddToViewDataImpl(10, tags1, time, {buckets}, &data);
188197

189198
const ViewDataImpl export_data1(data, time);
190199
EXPECT_EQ(Aggregation::Distribution(buckets), export_data1.aggregation());

opencensus/stats/testing/test_utils.cc

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,16 @@
1414

1515
#include "opencensus/stats/testing/test_utils.h"
1616

17+
#include <initializer_list>
1718
#include <memory>
19+
#include <string>
20+
#include <utility>
1821

1922
#include "absl/memory/memory.h"
2023
#include "absl/time/time.h"
24+
#include "opencensus/stats/bucket_boundaries.h"
2125
#include "opencensus/stats/internal/delta_producer.h"
26+
#include "opencensus/stats/internal/measure_data.h"
2227

2328
namespace opencensus {
2429
namespace stats {
@@ -29,8 +34,12 @@ ViewData TestUtils::MakeViewData(
2934
const ViewDescriptor& descriptor,
3035
std::initializer_list<std::pair<std::vector<std::string>, double>> values) {
3136
auto impl = absl::make_unique<ViewDataImpl>(absl::UnixEpoch(), descriptor);
37+
std::vector<BucketBoundaries> boundaries = {
38+
descriptor.aggregation().bucket_boundaries()};
3239
for (const auto& value : values) {
33-
impl->Add(value.second, value.first, absl::UnixEpoch());
40+
MeasureData measure_data = MeasureData(boundaries);
41+
measure_data.Add(value.second);
42+
impl->Merge(value.first, measure_data, absl::UnixEpoch());
3443
}
3544
if (impl->type() == ViewDataImpl::Type::kStatsObject) {
3645
return ViewData(absl::make_unique<ViewDataImpl>(*impl, absl::UnixEpoch()));

0 commit comments

Comments
 (0)