Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Unified Diff: webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc

Issue 2684353004: Reduce the BWE with 50% when feedback is received too late. (Closed)
Patch Set: Updated comment. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc
diff --git a/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc b/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc
index d2e9eb340db90743614c44665d848b2f60a7d6f1..438a0fccc0c9d09d00f7945e7be7715b46d43753 100644
--- a/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc
+++ b/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc
@@ -38,6 +38,7 @@ class TransportFeedbackAdapterTest : public ::testing::Test {
virtual void SetUp() {
adapter_.reset(new TransportFeedbackAdapter(&clock_, &bitrate_controller_));
adapter_->InitBwe();
+ adapter_->SetStartBitrate(300000);
}
virtual void TearDown() { adapter_.reset(); }
@@ -129,15 +130,16 @@ TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) {
ComparePacketVectors(packets, adapter_->GetTransportFeedbackVector());
}
-TEST_F(TransportFeedbackAdapterTest, Timeout) {
+TEST_F(TransportFeedbackAdapterTest, LongFeedbackDelays) {
const int64_t kFeedbackTimeoutMs = 60001;
- {
+ const int kMaxConsecutiveFailedLookups = 5;
+ for (int i = 0; i < kMaxConsecutiveFailedLookups; ++i) {
std::vector<PacketInfo> packets;
- packets.push_back(PacketInfo(100, 200, 0, 1500, 0));
- packets.push_back(PacketInfo(110, 210, 1, 1500, 0));
- packets.push_back(PacketInfo(120, 220, 2, 1500, 0));
- packets.push_back(PacketInfo(130, 230, 3, 1500, 1));
- packets.push_back(PacketInfo(140, 240, 4, 1500, 1));
+ packets.push_back(PacketInfo(i * 100, 2 * i * 100, 0, 1500, 0));
+ packets.push_back(PacketInfo(i * 100 + 10, 2 * i * 100 + 10, 1, 1500, 0));
+ packets.push_back(PacketInfo(i * 100 + 20, 2 * i * 100 + 20, 2, 1500, 0));
+ packets.push_back(PacketInfo(i * 100 + 30, 2 * i * 100 + 30, 3, 1500, 1));
+ packets.push_back(PacketInfo(i * 100 + 40, 2 * i * 100 + 40, 4, 1500, 1));
for (const PacketInfo& packet : packets)
OnSentPacket(packet);
@@ -154,15 +156,25 @@ TEST_F(TransportFeedbackAdapterTest, Timeout) {
feedback.Build();
clock_.AdvanceTimeMilliseconds(kFeedbackTimeoutMs);
- PacketInfo later_packet(kFeedbackTimeoutMs + 140, kFeedbackTimeoutMs + 240,
- 5, 1500, 1);
+ PacketInfo later_packet(kFeedbackTimeoutMs + i * 100 + 40,
+ kFeedbackTimeoutMs + i * 200 + 40, 5, 1500, 1);
OnSentPacket(later_packet);
adapter_->OnTransportFeedback(feedback);
- EXPECT_EQ(0, rtc::checked_cast<int>(
- adapter_->GetTransportFeedbackVector().size()));
+
+ // Check that packets have timed out.
+ for (PacketInfo& packet : packets) {
+ packet.send_time_ms = -1;
+ packet.payload_size = 0;
+ packet.probe_cluster_id = -1;
+ }
+ ComparePacketVectors(packets, adapter_->GetTransportFeedbackVector());
}
+ // Target bitrate should have halved due to feedback delays.
+ EXPECT_EQ(150000u, target_bitrate_bps_);
+
+ // Test with feedback that isn't late enough to time out.
{
std::vector<PacketInfo> packets;
packets.push_back(PacketInfo(100, 200, 0, 1500, 0));
@@ -225,8 +237,14 @@ TEST_F(TransportFeedbackAdapterTest, HandlesDroppedPackets) {
feedback.Build();
std::vector<PacketInfo> expected_packets(
- packets.begin() + kSendSideDropBefore,
- packets.begin() + kReceiveSideDropAfter + 1);
+ packets.begin(), packets.begin() + kReceiveSideDropAfter + 1);
+ // Packets that have timed out on the send-side have lost the
+ // information stored on the send-side.
+ for (size_t i = 0; i < kSendSideDropBefore; ++i) {
+ expected_packets[i].send_time_ms = -1;
+ expected_packets[i].probe_cluster_id = -1;
+ expected_packets[i].payload_size = 0;
+ }
adapter_->OnTransportFeedback(feedback);
ComparePacketVectors(expected_packets,

Powered by Google App Engine
This is Rietveld 408576698