Reland of the test portion of:
https://webrtc-review.googlesource.com/c/src/+/172847 ------------ original description -------------- Preparation for ReceiveStatisticsProxy lock reduction. Update tests to call VideoReceiveStream::GetStats() in the same or at least similar way it gets called in production (construction thread, same TQ/thread). Mapped out threads and context for ReceiveStatisticsProxy, VideoQualityObserver and VideoReceiveStream. Added follow-up TODOs for webrtc:11489. One functional change in ReceiveStatisticsProxy is that when sender side RtcpPacketTypesCounterUpdated calls are made, the counter is updated asynchronously since the sender calls the method on a different thread than the receiver. Make CallClient::SendTask public to allow tests to run tasks in the right context. CallClient already does this internally for GetStats. Remove 10 sec sleep in StopSendingKeyframeRequestsForInactiveStream. Bug: webrtc:11489 Change-Id: I491e13344b9fa714de0741dd927d907de7e39e83 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173583 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31077}
This commit is contained in:
@ -537,8 +537,8 @@ DataRate AverageBitrateAfterCrossInducedLoss(std::string name) {
|
||||
auto ret_net = {s.CreateSimulationNode(net_conf)};
|
||||
|
||||
auto* client = s.CreateClient("send", CallClientConfig());
|
||||
auto* route = s.CreateRoutes(
|
||||
client, send_net, s.CreateClient("return", CallClientConfig()), ret_net);
|
||||
auto* callee = s.CreateClient("return", CallClientConfig());
|
||||
auto* route = s.CreateRoutes(client, send_net, callee, ret_net);
|
||||
// TODO(srte): Make this work with RTX enabled or remove it.
|
||||
auto* video = s.CreateVideoStream(route->forward(), [](VideoStreamConfig* c) {
|
||||
c->stream.use_rtx = false;
|
||||
@ -553,9 +553,17 @@ DataRate AverageBitrateAfterCrossInducedLoss(std::string name) {
|
||||
s.net()->StopCrossTraffic(tcp_traffic);
|
||||
s.RunFor(TimeDelta::Seconds(20));
|
||||
}
|
||||
return DataSize::Bytes(video->receive()
|
||||
->GetStats()
|
||||
.rtp_stats.packet_counter.TotalBytes()) /
|
||||
|
||||
// Querying the video stats from within the expected runtime environment
|
||||
// (i.e. the TQ that belongs to the CallClient, not the Scenario TQ that
|
||||
// we're currently on).
|
||||
VideoReceiveStream::Stats video_receive_stats;
|
||||
auto* video_stream = video->receive();
|
||||
callee->SendTask([&video_stream, &video_receive_stats]() {
|
||||
video_receive_stats = video_stream->GetStats();
|
||||
});
|
||||
return DataSize::Bytes(
|
||||
video_receive_stats.rtp_stats.packet_counter.TotalBytes()) /
|
||||
s.TimeSinceStart();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user