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}
diff --git a/call/rtp_video_sender_unittest.cc b/call/rtp_video_sender_unittest.cc
index 951cd4e..d7d7034 100644
--- a/call/rtp_video_sender_unittest.cc
+++ b/call/rtp_video_sender_unittest.cc
@@ -526,9 +526,9 @@
test::NetworkSimulationConfig net_conf;
net_conf.bandwidth = DataRate::KilobitsPerSec(300);
auto send_node = s.CreateSimulationNode(net_conf);
+ auto* callee = s.CreateClient("return", call_conf);
auto* route = s.CreateRoutes(s.CreateClient("send", call_conf), {send_node},
- s.CreateClient("return", call_conf),
- {s.CreateSimulationNode(net_conf)});
+ callee, {s.CreateSimulationNode(net_conf)});
test::VideoStreamConfig lossy_config;
lossy_config.source.framerate = 5;
@@ -556,14 +556,20 @@
// from initial probing.
s.RunFor(TimeDelta::Seconds(1));
rtx_packets = 0;
- int decoded_baseline = lossy->receive()->GetStats().frames_decoded;
+ int decoded_baseline = 0;
+ callee->SendTask([&decoded_baseline, &lossy]() {
+ decoded_baseline = lossy->receive()->GetStats().frames_decoded;
+ });
s.RunFor(TimeDelta::Seconds(1));
// We expect both that RTX packets were sent and that an appropriate number of
// frames were received. This is somewhat redundant but reduces the risk of
// false positives in future regressions (e.g. RTX is send due to probing).
EXPECT_GE(rtx_packets, 1);
- int frames_decoded =
- lossy->receive()->GetStats().frames_decoded - decoded_baseline;
+ int frames_decoded = 0;
+ callee->SendTask([&decoded_baseline, &frames_decoded, &lossy]() {
+ frames_decoded =
+ lossy->receive()->GetStats().frames_decoded - decoded_baseline;
+ });
EXPECT_EQ(frames_decoded, 5);
}