Add ability to add peer to the stats poller during the test

Bug: b/213863770
Change-Id: I65e0338806f808329725fce50d778738724cf13d
Pair: mbonadei@webrtc.org
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251693
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36000}
This commit is contained in:
Artem Titov 2022-02-14 17:13:09 +01:00 committed by WebRTC LUCI CQ
parent f7a1937e70
commit 987b671017
3 changed files with 25 additions and 7 deletions

View File

@ -498,6 +498,8 @@ if (!build_with_chromium) {
"../../../api:rtc_stats_api",
"../../../api:stats_observer_interface",
"../../../rtc_base:logging",
"../../../rtc_base:rtc_base_approved",
"../../../rtc_base/synchronization:mutex",
]
}

View File

@ -13,6 +13,7 @@
#include <utility>
#include "rtc_base/logging.h"
#include "rtc_base/synchronization/mutex.h"
namespace webrtc {
namespace webrtc_pc_e2e {
@ -29,18 +30,28 @@ void InternalStatsObserver::OnStatsDelivered(
}
StatsPoller::StatsPoller(std::vector<StatsObserverInterface*> observers,
std::map<std::string, TestPeer*> peers) {
std::map<std::string, TestPeer*> peers)
: observers_(observers) {
webrtc::MutexLock lock(&mutex_);
for (auto& peer : peers) {
pollers_.push_back(rtc::make_ref_counted<InternalStatsObserver>(
peer.first, peer.second, observers));
peer.first, peer.second, observers_));
}
}
void StatsPoller::PollStatsAndNotifyObservers() {
webrtc::MutexLock lock(&mutex_);
for (auto& poller : pollers_) {
poller->PollStats();
}
}
void StatsPoller::RegisterParticipantInCall(absl::string_view peer_name,
TestPeer* peer) {
webrtc::MutexLock lock(&mutex_);
pollers_.push_back(rtc::make_ref_counted<InternalStatsObserver>(
peer_name, peer, observers_));
}
} // namespace webrtc_pc_e2e
} // namespace webrtc

View File

@ -19,6 +19,8 @@
#include "api/peer_connection_interface.h"
#include "api/stats/rtc_stats_collector_callback.h"
#include "api/test/stats_observer_interface.h"
#include "rtc_base/synchronization/mutex.h"
#include "rtc_base/thread_annotations.h"
#include "test/pc/e2e/test_peer.h"
namespace webrtc {
@ -28,12 +30,10 @@ namespace webrtc_pc_e2e {
// objects subscribed.
class InternalStatsObserver : public RTCStatsCollectorCallback {
public:
InternalStatsObserver(std::string pc_label,
InternalStatsObserver(absl::string_view pc_label,
TestPeer* peer,
std::vector<StatsObserverInterface*> observers)
: pc_label_(std::move(pc_label)),
peer_(peer),
observers_(std::move(observers)) {}
: pc_label_(pc_label), peer_(peer), observers_(std::move(observers)) {}
void PollStats();
@ -56,8 +56,13 @@ class StatsPoller {
void PollStatsAndNotifyObservers();
void RegisterParticipantInCall(absl::string_view peer_name, TestPeer* peer);
private:
std::vector<rtc::scoped_refptr<InternalStatsObserver>> pollers_;
const std::vector<StatsObserverInterface*> observers_;
webrtc::Mutex mutex_;
std::vector<rtc::scoped_refptr<InternalStatsObserver>> pollers_
RTC_GUARDED_BY(mutex_);
};
} // namespace webrtc_pc_e2e