blob: baac0ca8f0f23691f3ae3bffba4552c682d283ab [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
Henrik Kjellander15583c12016-02-10 10:53:12 +010011#ifndef WEBRTC_API_FAKEMETRICSOBSERVER_H_
12#define WEBRTC_API_FAKEMETRICSOBSERVER_H_
jbauchac8869e2015-07-03 01:36:14 -070013
14#include <map>
15#include <string>
16
Henrik Kjellander15583c12016-02-10 10:53:12 +010017#include "webrtc/api/peerconnectioninterface.h"
jbauchac8869e2015-07-03 01:36:14 -070018#include "webrtc/base/thread_checker.h"
19
20namespace webrtc {
21
22class FakeMetricsObserver : public MetricsObserverInterface {
23 public:
24 FakeMetricsObserver();
25 void Reset();
26
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070027 void IncrementEnumCounter(PeerConnectionEnumCounterType,
28 int counter,
29 int counter_max) override;
jbauchac8869e2015-07-03 01:36:14 -070030 void AddHistogramSample(PeerConnectionMetricsName type,
31 int value) override;
jbauchac8869e2015-07-03 01:36:14 -070032
33 // Accessors to be used by the tests.
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070034 int GetEnumCounter(PeerConnectionEnumCounterType type, int counter) const;
Guo-wei Shieh456696a2015-09-30 21:48:54 -070035 int GetHistogramSample(PeerConnectionMetricsName type) const;
jbauchac8869e2015-07-03 01:36:14 -070036
37 protected:
38 ~FakeMetricsObserver() {}
39
40 private:
41 rtc::ThreadChecker thread_checker_;
Guo-wei Shieh456696a2015-09-30 21:48:54 -070042 // The vector contains maps for each counter type. In the map, it's a mapping
43 // from individual counter to its count, such that it's memory efficient when
44 // comes to sparse enum types, like the SSL ciphers in the IANA registry.
45 std::vector<std::map<int, int>> counters_;
46 int histogram_samples_[kPeerConnectionMetricsName_Max];
jbauchac8869e2015-07-03 01:36:14 -070047};
48
49} // namespace webrtc
50
Henrik Kjellander15583c12016-02-10 10:53:12 +010051#endif // WEBRTC_API_FAKEMETRICSOBSERVER_H_