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.cc82
1 files changed, 82 insertions, 0 deletions
diff --git a/webrtc/test/histogram.cc b/webrtc/test/histogram.cc
new file mode 100644
index 0000000000..6fcdb6864f
--- /dev/null
+++ b/webrtc/test/histogram.cc
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "webrtc/test/histogram.h"
+
+#include <map>
+
+#include "webrtc/base/criticalsection.h"
+#include "webrtc/base/thread_annotations.h"
+#include "webrtc/system_wrappers/include/metrics.h"
+
+// Test implementation of histogram methods in
+// webrtc/system_wrappers/include/metrics.h.
+
+namespace webrtc {
+namespace {
+struct SampleInfo {
+ SampleInfo(int sample)
+ : last(sample), total(1) {}
+ int last; // Last added sample.
+ int total; // Total number of added samples.
+};
+
+rtc::CriticalSection histogram_crit_;
+// Map holding info about added samples to a histogram (mapped by the histogram
+// name).
+std::map<std::string, SampleInfo> histograms_ GUARDED_BY(histogram_crit_);
+} // namespace
+
+namespace metrics {
+Histogram* HistogramFactoryGetCounts(const std::string& name, int min, int max,
+ int bucket_count) { return NULL; }
+
+Histogram* HistogramFactoryGetEnumeration(const std::string& name,
+ int boundary) { return NULL; }
+
+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;
+}
+} // namespace metrics
+
+namespace test {
+int LastHistogramSample(const std::string& name) {
+ rtc::CritScope cs(&histogram_crit_);
+ const auto it = histograms_.find(name);
+ if (it == histograms_.end()) {
+ return -1;
+ }
+ return it->second.last;
+}
+
+int NumHistogramSamples(const std::string& name) {
+ rtc::CritScope cs(&histogram_crit_);
+ const auto it = histograms_.find(name);
+ if (it == histograms_.end()) {
+ return 0;
+ }
+ return it->second.total;
+}
+
+void ClearHistograms() {
+ rtc::CritScope cs(&histogram_crit_);
+ histograms_.clear();
+}
+} // namespace test
+} // namespace webrtc
+