Index: webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc |
diff --git a/webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc b/webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc |
index 62dd2c3956eec857fddad54d511c9faa384fbe32..d999525be0ef0e450152e77c0aa7e263b1bde098 100644 |
--- a/webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc |
+++ b/webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc |
@@ -48,7 +48,7 @@ class RemoteEstimatorProxyTest : public ::testing::Test { |
} |
SimulatedClock clock_; |
- MockPacketRouter router_; |
+ testing::StrictMock<MockPacketRouter> router_; |
RemoteEstimatorProxy proxy_; |
const size_t kDefaultPacketSize = 100; |
@@ -225,6 +225,28 @@ TEST_F(RemoteEstimatorProxyTest, SendsFragmentedFeedback) { |
Process(); |
} |
+TEST_F(RemoteEstimatorProxyTest, GracefullyHandlesReorderingAndWrap) { |
+ const int64_t kDeltaMs = 1000; |
+ const uint16_t kLargeSeq = 62762; |
+ IncomingPacket(kBaseSeq, kBaseTimeMs); |
+ IncomingPacket(kLargeSeq, kBaseTimeMs + kDeltaMs); |
+ |
+ EXPECT_CALL(router_, SendFeedback(_)) |
+ .Times(1) |
+ .WillOnce(Invoke([this](rtcp::TransportFeedback* packet) { |
+ packet->Build(); |
+ EXPECT_EQ(kBaseSeq, packet->GetBaseSequence()); |
+ EXPECT_EQ(kMediaSsrc, packet->GetMediaSourceSsrc()); |
+ |
+ std::vector<int64_t> delta_vec = packet->GetReceiveDeltasUs(); |
+ EXPECT_EQ(1u, delta_vec.size()); |
+ EXPECT_EQ(kBaseTimeMs, (packet->GetBaseTimeUs() + delta_vec[0]) / 1000); |
+ return true; |
+ })); |
+ |
+ Process(); |
+} |
+ |
TEST_F(RemoteEstimatorProxyTest, ResendsTimestampsOnReordering) { |
IncomingPacket(kBaseSeq, kBaseTimeMs); |
IncomingPacket(kBaseSeq + 2, kBaseTimeMs + 2); |