aboutsummaryrefslogtreecommitdiff
path: root/webrtc/test/histogram.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webrtc/test/histogram.cc')
-rw-r--r--webrtc/test/histogram.cc49
1 files changed, 32 insertions, 17 deletions
diff --git a/webrtc/test/histogram.cc b/webrtc/test/histogram.cc
index 6fcdb6864f..2893e4389a 100644
--- a/webrtc/test/histogram.cc
+++ b/webrtc/test/histogram.cc
@@ -12,6 +12,7 @@
#include <map>
+#include "webrtc/base/checks.h"
#include "webrtc/base/criticalsection.h"
#include "webrtc/base/thread_annotations.h"
#include "webrtc/system_wrappers/include/metrics.h"
@@ -22,10 +23,10 @@
namespace webrtc {
namespace {
struct SampleInfo {
- SampleInfo(int sample)
- : last(sample), total(1) {}
- int last; // Last added sample.
- int total; // Total number of added samples.
+ SampleInfo(const std::string& name) : name_(name), last_(-1), total_(0) {}
+ const std::string name_;
+ int last_; // Last added sample.
+ int total_; // Total number of added samples.
};
rtc::CriticalSection histogram_crit_;
@@ -36,21 +37,33 @@ std::map<std::string, SampleInfo> histograms_ GUARDED_BY(histogram_crit_);
namespace metrics {
Histogram* HistogramFactoryGetCounts(const std::string& name, int min, int max,
- int bucket_count) { return NULL; }
+ int bucket_count) {
+ rtc::CritScope cs(&histogram_crit_);
+ if (histograms_.find(name) == histograms_.end()) {
+ histograms_.insert(std::make_pair(name, SampleInfo(name)));
+ }
+ auto it = histograms_.find(name);
+ return reinterpret_cast<Histogram*>(&it->second);
+}
Histogram* HistogramFactoryGetEnumeration(const std::string& name,
- int boundary) { return NULL; }
+ int boundary) {
+ rtc::CritScope cs(&histogram_crit_);
+ if (histograms_.find(name) == histograms_.end()) {
+ histograms_.insert(std::make_pair(name, SampleInfo(name)));
+ }
+ auto it = histograms_.find(name);
+ return reinterpret_cast<Histogram*>(&it->second);
+}
void HistogramAdd(
Histogram* histogram_pointer, const std::string& name, int sample) {
rtc::CritScope cs(&histogram_crit_);
- auto it = histograms_.find(name);
- if (it == histograms_.end()) {
- histograms_.insert(std::make_pair(name, SampleInfo(sample)));
- return;
- }
- it->second.last = sample;
- ++it->second.total;
+ SampleInfo* ptr = reinterpret_cast<SampleInfo*>(histogram_pointer);
+ // The name should not vary.
+ RTC_CHECK(ptr->name_ == name);
+ ptr->last_ = sample;
+ ++ptr->total_;
}
} // namespace metrics
@@ -61,7 +74,7 @@ int LastHistogramSample(const std::string& name) {
if (it == histograms_.end()) {
return -1;
}
- return it->second.last;
+ return it->second.last_;
}
int NumHistogramSamples(const std::string& name) {
@@ -70,13 +83,15 @@ int NumHistogramSamples(const std::string& name) {
if (it == histograms_.end()) {
return 0;
}
- return it->second.total;
+ return it->second.total_;
}
void ClearHistograms() {
rtc::CritScope cs(&histogram_crit_);
- histograms_.clear();
+ for (auto& it : histograms_) {
+ it.second.last_ = -1;
+ it.second.total_ = 0;
+ }
}
} // namespace test
} // namespace webrtc
-