blob: afd019391a6efdbf3cdf814d5136618e035a9bcf [file] [log] [blame]
jbauchac8869e2015-07-03 01:36:14 -07001/*
kjellanderb24317b2016-02-10 07:54:43 -08002 * Copyright 2015 The WebRTC project authors. All Rights Reserved.
jbauchac8869e2015-07-03 01:36:14 -07003 *
kjellanderb24317b2016-02-10 07:54:43 -08004 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
jbauchac8869e2015-07-03 01:36:14 -07009 */
10
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef API_FAKEMETRICSOBSERVER_H_
12#define API_FAKEMETRICSOBSERVER_H_
jbauchac8869e2015-07-03 01:36:14 -070013
14#include <map>
15#include <string>
oprypin803dc292017-02-01 01:55:59 -080016#include <vector>
jbauchac8869e2015-07-03 01:36:14 -070017
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020018#include "api/peerconnectioninterface.h"
19#include "rtc_base/thread_checker.h"
jbauchac8869e2015-07-03 01:36:14 -070020
21namespace webrtc {
22
23class FakeMetricsObserver : public MetricsObserverInterface {
24 public:
25 FakeMetricsObserver();
26 void Reset();
27
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070028 void IncrementEnumCounter(PeerConnectionEnumCounterType,
29 int counter,
30 int counter_max) override;
jbauchac8869e2015-07-03 01:36:14 -070031 void AddHistogramSample(PeerConnectionMetricsName type,
32 int value) override;
jbauchac8869e2015-07-03 01:36:14 -070033
34 // Accessors to be used by the tests.
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070035 int GetEnumCounter(PeerConnectionEnumCounterType type, int counter) const;
Guo-wei Shieh456696a2015-09-30 21:48:54 -070036 int GetHistogramSample(PeerConnectionMetricsName type) const;
jbauchac8869e2015-07-03 01:36:14 -070037
38 protected:
39 ~FakeMetricsObserver() {}
40
41 private:
42 rtc::ThreadChecker thread_checker_;
Guo-wei Shieh456696a2015-09-30 21:48:54 -070043 // The vector contains maps for each counter type. In the map, it's a mapping
44 // from individual counter to its count, such that it's memory efficient when
45 // comes to sparse enum types, like the SSL ciphers in the IANA registry.
46 std::vector<std::map<int, int>> counters_;
47 int histogram_samples_[kPeerConnectionMetricsName_Max];
jbauchac8869e2015-07-03 01:36:14 -070048};
49
50} // namespace webrtc
51
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020052#endif // API_FAKEMETRICSOBSERVER_H_