| /* |
| * Copyright 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. |
| */ |
| |
| #ifndef API_FAKEMETRICSOBSERVER_H_ |
| #define API_FAKEMETRICSOBSERVER_H_ |
| |
| #include <map> |
| #include <string> |
| #include <vector> |
| |
| #include "api/peerconnectioninterface.h" |
| #include "rtc_base/thread_checker.h" |
| |
| namespace webrtc { |
| |
| class FakeMetricsObserver : public MetricsObserverInterface { |
| public: |
| FakeMetricsObserver(); |
| void Reset(); |
| |
| void IncrementEnumCounter(PeerConnectionEnumCounterType, |
| int counter, |
| int counter_max) override; |
| void AddHistogramSample(PeerConnectionMetricsName type, int value) override; |
| |
| // Accessors to be used by the tests. |
| int GetEnumCounter(PeerConnectionEnumCounterType type, int counter) const; |
| int GetHistogramSample(PeerConnectionMetricsName type) const; |
| |
| // Returns true if and only if there is a count of 1 for the given counter and |
| // a count of 0 for all other counters of the given enum type. |
| bool ExpectOnlySingleEnumCount(PeerConnectionEnumCounterType type, |
| int counter) const; |
| |
| protected: |
| ~FakeMetricsObserver() {} |
| |
| private: |
| rtc::ThreadChecker thread_checker_; |
| // The vector contains maps for each counter type. In the map, it's a mapping |
| // from individual counter to its count, such that it's memory efficient when |
| // comes to sparse enum types, like the SSL ciphers in the IANA registry. |
| std::vector<std::map<int, int>> counters_; |
| int histogram_samples_[kPeerConnectionMetricsName_Max]; |
| }; |
| |
| } // namespace webrtc |
| |
| #endif // API_FAKEMETRICSOBSERVER_H_ |