Index: webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter_unittest.cc |
diff --git a/webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter_unittest.cc b/webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter_unittest.cc |
index f3be09206ec455835eaf9d404c65c140f704e1fb..6bc97d1bfc5adec7b1b134938c86a004b648ff93 100644 |
--- a/webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter_unittest.cc |
+++ b/webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter_unittest.cc |
@@ -223,6 +223,39 @@ TEST_F(TransportFeedbackAdapterTest, SendTimeWrapsBothWays) { |
} |
} |
+TEST_F(TransportFeedbackAdapterTest, HandlesReordering) { |
+ std::vector<PacketInfo> packets; |
+ packets.push_back(PacketInfo(120, 200, 0, 1500, true)); |
+ packets.push_back(PacketInfo(110, 210, 1, 1500, true)); |
+ packets.push_back(PacketInfo(100, 220, 2, 1500, true)); |
+ std::vector<PacketInfo> expected_packets; |
+ expected_packets.push_back(packets[2]); |
+ expected_packets.push_back(packets[1]); |
+ expected_packets.push_back(packets[0]); |
+ |
+ for (const PacketInfo& packet : packets) |
+ OnSentPacket(packet); |
+ |
+ rtcp::TransportFeedback feedback; |
+ feedback.WithBase(packets[0].sequence_number, |
+ packets[0].arrival_time_ms * 1000); |
+ |
+ for (const PacketInfo& packet : packets) { |
+ EXPECT_TRUE(feedback.WithReceivedPacket(packet.sequence_number, |
+ packet.arrival_time_ms * 1000)); |
+ } |
+ |
+ feedback.Build(); |
+ |
+ EXPECT_CALL(*bitrate_estimator_, IncomingPacketFeedbackVector(_)) |
+ .Times(1) |
+ .WillOnce(Invoke([expected_packets, |
+ this](const std::vector<PacketInfo>& feedback_vector) { |
+ ComparePacketVectors(expected_packets, feedback_vector); |
+ })); |
+ adapter_->OnTransportFeedback(feedback); |
+} |
+ |
TEST_F(TransportFeedbackAdapterTest, TimestampDeltas) { |
std::vector<PacketInfo> sent_packets; |
const int64_t kSmallDeltaUs = |
@@ -257,6 +290,14 @@ TEST_F(TransportFeedbackAdapterTest, TimestampDeltas) { |
info.arrival_time_ms += (kLargePositiveDeltaUs + 1000) / 1000; |
++info.sequence_number; |
+ // Expected to be ordered on arrival time when the feedback message has been |
+ // parsed. |
+ std::vector<PacketInfo> expected_packets; |
+ expected_packets.push_back(sent_packets[0]); |
+ expected_packets.push_back(sent_packets[3]); |
+ expected_packets.push_back(sent_packets[1]); |
+ expected_packets.push_back(sent_packets[2]); |
+ |
// Packets will be added to send history. |
for (const PacketInfo& packet : sent_packets) |
OnSentPacket(packet); |
@@ -284,9 +325,9 @@ TEST_F(TransportFeedbackAdapterTest, TimestampDeltas) { |
EXPECT_TRUE(feedback.get() != nullptr); |
EXPECT_CALL(*bitrate_estimator_, IncomingPacketFeedbackVector(_)) |
.Times(1) |
- .WillOnce(Invoke([sent_packets, &received_feedback]( |
+ .WillOnce(Invoke([expected_packets, &received_feedback]( |
const std::vector<PacketInfo>& feedback_vector) { |
- EXPECT_EQ(sent_packets.size(), feedback_vector.size()); |
+ EXPECT_EQ(expected_packets.size(), feedback_vector.size()); |
received_feedback = feedback_vector; |
})); |
adapter_->OnTransportFeedback(*feedback.get()); |
@@ -310,9 +351,9 @@ TEST_F(TransportFeedbackAdapterTest, TimestampDeltas) { |
})); |
adapter_->OnTransportFeedback(*feedback.get()); |
- sent_packets.push_back(info); |
+ expected_packets.push_back(info); |
- ComparePacketVectors(sent_packets, received_feedback); |
+ ComparePacketVectors(expected_packets, received_feedback); |
} |
} // namespace test |