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

Unified Diff: webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc

Issue 1202253003: More Simulation Framework features (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Using rtc::scoped_ptr on nada_unittest.cc Created 5 years, 5 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/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc
diff --git a/webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc b/webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc
index 01cf7cbe3dd68880a64365d82a2b371e6ce8df0a..875c8f798f031e507811b7f882fd18b7b54b6d12 100644
--- a/webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc
+++ b/webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc
@@ -332,7 +332,7 @@ class BweTestFramework_DelayFilterTest : public ::testing::Test {
}
void TestDelayFilter(int64_t delay_ms) {
- filter_.SetDelayMs(delay_ms);
+ filter_.SetOneWayDelayMs(delay_ms);
TestDelayFilter(1, 0, 0); // No input should yield no output
// Single packet
@@ -340,7 +340,7 @@ class BweTestFramework_DelayFilterTest : public ::testing::Test {
TestDelayFilter(delay_ms, 0, 0);
for (int i = 0; i < delay_ms; ++i) {
- filter_.SetDelayMs(i);
+ filter_.SetOneWayDelayMs(i);
TestDelayFilter(1, 10, 10);
}
TestDelayFilter(0, 0, 0);
@@ -350,11 +350,11 @@ class BweTestFramework_DelayFilterTest : public ::testing::Test {
TestDelayFilter(delay_ms, 0, 0);
for (int i = 1; i < delay_ms + 1; ++i) {
- filter_.SetDelayMs(i);
+ filter_.SetOneWayDelayMs(i);
TestDelayFilter(1, 5, 5);
}
TestDelayFilter(0, 0, 0);
- filter_.SetDelayMs(2 * delay_ms);
+ filter_.SetOneWayDelayMs(2 * delay_ms);
TestDelayFilter(1, 0, 0);
TestDelayFilter(delay_ms, 13, 13);
TestDelayFilter(delay_ms, 0, 0);
@@ -363,11 +363,11 @@ class BweTestFramework_DelayFilterTest : public ::testing::Test {
TestDelayFilter(delay_ms, 0, 0);
for (int i = 0; i < 2 * delay_ms; ++i) {
- filter_.SetDelayMs(2 * delay_ms - i - 1);
+ filter_.SetOneWayDelayMs(2 * delay_ms - i - 1);
TestDelayFilter(1, 5, 5);
}
TestDelayFilter(0, 0, 0);
- filter_.SetDelayMs(0);
+ filter_.SetOneWayDelayMs(0);
TestDelayFilter(0, 7, 7);
ASSERT_TRUE(IsTimeSorted(accumulated_packets_));
@@ -388,7 +388,7 @@ TEST_F(BweTestFramework_DelayFilterTest, Delay0) {
TestDelayFilter(1, 0, 0); // No input should yield no output
TestDelayFilter(1, 10, 10); // Expect no delay (delay time is zero)
TestDelayFilter(1, 0, 0); // Check no packets are still in buffer
- filter_.SetDelayMs(0);
+ filter_.SetOneWayDelayMs(0);
TestDelayFilter(1, 5, 5); // Expect no delay (delay time is zero)
TestDelayFilter(1, 0, 0); // Check no packets are still in buffer
}
@@ -415,7 +415,7 @@ TEST_F(BweTestFramework_DelayFilterTest, JumpToZeroDelay) {
Packets packets;
// Delay a bunch of packets, accumulate them to the 'acc' list.
- delay.SetDelayMs(100.0f);
+ delay.SetOneWayDelayMs(100.0f);
for (uint32_t i = 0; i < 10; ++i) {
packets.push_back(new MediaPacket(i * 100, i));
}
@@ -426,7 +426,7 @@ TEST_F(BweTestFramework_DelayFilterTest, JumpToZeroDelay) {
// Drop delay to zero, send a few more packets through the delay, append them
// to the 'acc' list and verify that it is all sorted.
- delay.SetDelayMs(0.0f);
+ delay.SetOneWayDelayMs(0.0f);
for (uint32_t i = 10; i < 50; ++i) {
packets.push_back(new MediaPacket(i * 100, i));
}
@@ -445,12 +445,12 @@ TEST_F(BweTestFramework_DelayFilterTest, IncreasingDelay) {
TestDelayFilter(i);
}
// Reach a steady state.
- filter_.SetDelayMs(100);
+ filter_.SetOneWayDelayMs(100);
TestDelayFilter(1, 20, 20);
TestDelayFilter(2, 0, 0);
TestDelayFilter(99, 20, 20);
// Drop delay back down to zero.
- filter_.SetDelayMs(0);
+ filter_.SetOneWayDelayMs(0);
TestDelayFilter(1, 100, 100);
TestDelayFilter(23010, 0, 0);
ASSERT_TRUE(IsTimeSorted(accumulated_packets_));
@@ -643,7 +643,7 @@ class BweTestFramework_ChokeFilterTest : public ::testing::Test {
delete output_packets_.front();
output_packets_.pop_front();
}
- EXPECT_EQ(expected_kbit_transmitted, (bytes_transmitted * 8) / 1000);
+ EXPECT_EQ(expected_kbit_transmitted, (bytes_transmitted * 8 + 500) / 1000);
}
void CheckMaxDelay(int64_t max_delay_ms) {
@@ -672,7 +672,7 @@ TEST_F(BweTestFramework_ChokeFilterTest, NoQueue) {
uint16_t sequence_number = 0;
int64_t send_time_us = 0;
ChokeFilter filter(NULL, 0);
- filter.SetCapacity(10);
+ filter.set_capacity_kbps(10);
Packets packets;
RTPHeader header;
for (int i = 0; i < 2; ++i) {
@@ -699,14 +699,14 @@ TEST_F(BweTestFramework_ChokeFilterTest, Short) {
// That is actually just a single packet, since each packet has 1000 bits of
// payload.
ChokeFilter filter(NULL, 0);
- filter.SetCapacity(10);
+ filter.set_capacity_kbps(10);
TestChoke(&filter, 100, 100, 1);
}
TEST_F(BweTestFramework_ChokeFilterTest, Medium) {
// 100ms, 10 packets, 10 kbps choke -> 1 packet through, or 1 kbit.
ChokeFilter filter(NULL, 0);
- filter.SetCapacity(10);
+ filter.set_capacity_kbps(10);
TestChoke(&filter, 100, 10, 1);
// 200ms, no new packets -> another packet through.
TestChoke(&filter, 100, 0, 1);
@@ -719,7 +719,7 @@ TEST_F(BweTestFramework_ChokeFilterTest, Medium) {
TEST_F(BweTestFramework_ChokeFilterTest, Long) {
// 100ms, 100 packets in queue, 10 kbps choke -> 1 packet through, or 1 kbit.
ChokeFilter filter(NULL, 0);
- filter.SetCapacity(10);
+ filter.set_capacity_kbps(10);
TestChoke(&filter, 100, 100, 1);
// 200ms, no input, another packet through.
TestChoke(&filter, 100, 0, 1);
@@ -727,22 +727,22 @@ TEST_F(BweTestFramework_ChokeFilterTest, Long) {
TestChoke(&filter, 800, 0, 8);
// 10000ms, no input, raise choke to 100 kbps. Remaining 90 packets in queue
// should be propagated, for a total of 90 kbps.
- filter.SetCapacity(100);
+ filter.set_capacity_kbps(100);
TestChoke(&filter, 9000, 0, 90);
// 10100ms, 20 more packets -> 10 packets or 10 kbit through.
TestChoke(&filter, 100, 20, 10);
// 10300ms, 10 more packets -> 20 packets out.
TestChoke(&filter, 200, 10, 20);
// 11300ms, no input, queue should be empty.
- filter.SetCapacity(10);
+ filter.set_capacity_kbps(10);
TestChoke(&filter, 1000, 0, 0);
}
TEST_F(BweTestFramework_ChokeFilterTest, MaxDelay) {
// 10 kbps choke, 500 ms delay cap
ChokeFilter filter(NULL, 0);
- filter.SetCapacity(10);
- filter.SetMaxDelay(500);
+ filter.set_capacity_kbps(10);
+ filter.set_max_delay_ms(500);
// 100ms, 100 packets in queue, 10 kbps choke -> 1 packet through, or 1 kbit.
TestChoke(&filter, 100, 100, 1);
CheckMaxDelay(500);
@@ -752,7 +752,7 @@ TEST_F(BweTestFramework_ChokeFilterTest, MaxDelay) {
TestChoke(&filter, 9500, 0, 0);
// 100 ms delay cap
- filter.SetMaxDelay(100);
+ filter.set_max_delay_ms(100);
// 10100ms, 50 more packets -> 1 packets or 1 kbit through.
TestChoke(&filter, 100, 50, 1);
CheckMaxDelay(100);
@@ -760,8 +760,8 @@ TEST_F(BweTestFramework_ChokeFilterTest, MaxDelay) {
TestChoke(&filter, 9900, 0, 0);
// Reset delay cap (0 is no cap) and verify no packets are dropped.
- filter.SetCapacity(10);
- filter.SetMaxDelay(0);
+ filter.set_capacity_kbps(10);
+ filter.set_max_delay_ms(0);
TestChoke(&filter, 100, 100, 1);
TestChoke(&filter, 9900, 0, 99);
}
@@ -784,7 +784,7 @@ TEST_F(BweTestFramework_ChokeFilterTest, ShortTraceTwoWraps) {
TEST_F(BweTestFramework_ChokeFilterTest, ShortTraceMaxDelay) {
TraceBasedDeliveryFilter filter(NULL, 0);
- filter.SetMaxDelay(25);
+ filter.set_max_delay_ms(25);
ASSERT_TRUE(filter.Init(test::ResourcePath("synthetic-trace", "rx")));
// Uses all slots up to 110 ms. Several packets are being dropped.
TestChoke(&filter, 110, 20, 9);
@@ -805,12 +805,14 @@ void TestVideoSender(VideoSender* sender,
ASSERT_TRUE(IsTimeSorted(packets));
ASSERT_TRUE(IsSequenceNumberSorted(packets));
EXPECT_EQ(expected_packets, packets.size());
+
int64_t send_time_us = -1;
size_t total_payload_size = 0;
uint32_t absolute_send_time = 0;
uint32_t absolute_send_time_wraps = 0;
uint32_t rtp_timestamp = 0;
uint32_t rtp_timestamp_wraps = 0;
+
for (const auto* packet : packets) {
const MediaPacket* media_packet = static_cast<const MediaPacket*>(packet);
EXPECT_LE(send_time_us, media_packet->send_time_us());
@@ -830,6 +832,7 @@ void TestVideoSender(VideoSender* sender,
}
rtp_timestamp = media_packet->header().timestamp;
}
+
EXPECT_EQ(expected_total_payload_size, total_payload_size);
EXPECT_GE(1u, absolute_send_time_wraps);
EXPECT_GE(1u, rtp_timestamp_wraps);
@@ -838,6 +841,8 @@ void TestVideoSender(VideoSender* sender,
delete packet;
}
+// Random {-1, 0, +1} ms was added to frame timestamps.
+
TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s) {
// 1 fps, 80 kbps
VideoSource source(0, 1.0f, 80, 0x1234, 0);
@@ -846,14 +851,16 @@ TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s) {
// We're at 1 fps, so all packets should be generated on first call, giving 10
// packets of each 1000 bytes, total 10000 bytes.
TestVideoSender(&sender, 1, 9, 400, 10000);
- // 999ms, should see no output here.
- TestVideoSender(&sender, 998, 0, 0, 0);
- // 1999ms, should get data for one more frame.
- TestVideoSender(&sender, 1000, 9, 400, 10000);
- // 2000ms, one more frame.
- TestVideoSender(&sender, 1, 9, 400, 10000);
- // 2999ms, should see nothing.
- TestVideoSender(&sender, 999, 0, 0, 0);
+ // 998ms, should see no output here.
+ TestVideoSender(&sender, 997, 0, 0, 0);
+ // 1001ms, should get data for one more frame.
+ TestVideoSender(&sender, 3, 9, 400, 10000);
+ // 1998ms, should see no output here.
+ TestVideoSender(&sender, 997, 0, 0, 0);
+ // 2001ms, one more frame.
+ TestVideoSender(&sender, 3, 9, 400, 10000);
+ // 2998ms, should see nothing.
+ TestVideoSender(&sender, 997, 0, 0, 0);
}
TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s_Offset) {
@@ -861,20 +868,20 @@ TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s_Offset) {
VideoSource source(0, 1.0f, 80, 0x1234, 500);
VideoSender sender(NULL, &source, kNullEstimator);
EXPECT_EQ(80000u, source.bits_per_second());
- // 499ms, no output.
- TestVideoSender(&sender, 499, 0, 0, 0);
- // 500ms, first frame (this is the offset we set), 10 packets of 1000 bytes.
- TestVideoSender(&sender, 1, 9, 400, 10000);
- // 1499ms, nothing.
- TestVideoSender(&sender, 999, 0, 0, 0);
- // 1999ms, second frame.
- TestVideoSender(&sender, 500, 9, 400, 10000);
- // 2499ms, nothing.
- TestVideoSender(&sender, 500, 0, 0, 0);
- // 2500ms, third frame.
- TestVideoSender(&sender, 1, 9, 400, 10000);
- // 3499ms, nothing.
- TestVideoSender(&sender, 999, 0, 0, 0);
+ // 498ms, no output.
+ TestVideoSender(&sender, 498, 0, 0, 0);
+ // 501ms, first frame (this is the offset we set), 10 packets of 1000 bytes.
+ TestVideoSender(&sender, 3, 9, 400, 10000);
+ // 1498ms, nothing.
+ TestVideoSender(&sender, 997, 0, 0, 0);
+ // 1501ms, second frame.
+ TestVideoSender(&sender, 3, 9, 400, 10000);
+ // 2498ms, nothing.
+ TestVideoSender(&sender, 997, 0, 0, 0);
+ // 2501ms, third frame.
+ TestVideoSender(&sender, 3, 9, 400, 10000);
+ // 3498ms, nothing.
+ TestVideoSender(&sender, 997, 0, 0, 0);
}
TEST(BweTestFramework_VideoSenderTest, Fps50Kpbs80_11s) {
@@ -882,55 +889,55 @@ TEST(BweTestFramework_VideoSenderTest, Fps50Kpbs80_11s) {
VideoSource source(0, 50.0f, 80, 0x1234, 0);
VideoSender sender(NULL, &source, kNullEstimator);
EXPECT_EQ(80000u, source.bits_per_second());
- // 9998ms, should see 500 frames, 200 byte payloads, total 100000 bytes.
- TestVideoSender(&sender, 9998, 500, 200, 100000);
- // 9999ms, nothing.
- TestVideoSender(&sender, 1, 0, 0, 0);
- // 10000ms, 501st frame as a single packet.
- TestVideoSender(&sender, 1, 1, 200, 200);
- // 10998ms, 49 more frames.
- TestVideoSender(&sender, 998, 49, 200, 9800);
- // 10999ms, nothing.
- TestVideoSender(&sender, 1, 0, 0, 0);
+ // 9981, should see 500 frames, 200 byte payloads, total 100000 bytes.
+ TestVideoSender(&sender, 9981, 500, 200, 100000);
+ // 9998ms, nothing.
+ TestVideoSender(&sender, 17, 0, 0, 0);
+ // 10001ms, 501st frame as a single packet.
+ TestVideoSender(&sender, 3, 1, 200, 200);
+ // 10981ms, 49 more frames.
+ TestVideoSender(&sender, 981, 49, 200, 9800);
+ // 10998ms, nothing.
+ TestVideoSender(&sender, 17, 0, 0, 0);
}
-TEST(BweTestFramework_VideoSenderTest, Fps10Kpbs120_1s) {
+TEST(BweTestFramework_VideoSenderTest, Fps20Kpbs120_1s) {
// 20 fps, 120 kbps.
VideoSource source(0, 20.0f, 120, 0x1234, 0);
VideoSender sender(NULL, &source, kNullEstimator);
EXPECT_EQ(120000u, source.bits_per_second());
- // 498ms, 10 frames with 750 byte payloads, total 7500 bytes.
- TestVideoSender(&sender, 498, 10, 750, 7500);
- // 499ms, nothing.
- TestVideoSender(&sender, 1, 0, 0, 0);
- // 500ms, one more frame.
- TestVideoSender(&sender, 1, 1, 750, 750);
- // 998ms, 9 more frames.
- TestVideoSender(&sender, 498, 9, 750, 6750);
- // 999ms, nothing.
- TestVideoSender(&sender, 1, 0, 0, 0);
+ // 451ms, 10 frames with 750 byte payloads, total 7500 bytes.
+ TestVideoSender(&sender, 451, 10, 750, 7500);
+ // 498ms, nothing.
+ TestVideoSender(&sender, 47, 0, 0, 0);
+ // 501ms, one more frame.
+ TestVideoSender(&sender, 3, 1, 750, 750);
+ // 951ms, 9 more frames.
+ TestVideoSender(&sender, 450, 9, 750, 6750);
+ // 998ms, nothing.
+ TestVideoSender(&sender, 47, 0, 0, 0);
}
-TEST(BweTestFramework_VideoSenderTest, Fps30Kbps800_20s) {
- // 20 fps, 820 kbps.
+TEST(BweTestFramework_VideoSenderTest, Fps25Kbps820_20s) {
+ // 25 fps, 820 kbps.
VideoSource source(0, 25.0f, 820, 0x1234, 0);
VideoSender sender(NULL, &source, kNullEstimator);
EXPECT_EQ(820000u, source.bits_per_second());
- // 9998ms, 250 frames. 820 kbps = 102500 bytes/s, so total should be 1025000.
+ // 9961ms, 250 frames. 820 kbps = 102500 bytes/s, so total should be 1025000.
// Each frame is 102500/25=4100 bytes, or 5 packets (4 @1000 bytes, 1 @100),
// so packet count should be 5*250=1250 and last packet of each frame has
// 100 bytes of payload.
- TestVideoSender(&sender, 9998, 1000, 500, 1025000);
- // 9999ms, nothing.
- TestVideoSender(&sender, 1, 0, 0, 0);
- // 19998ms, 250 more frames.
- TestVideoSender(&sender, 9999, 1000, 500, 1025000);
- // 19999ms, nothing.
- TestVideoSender(&sender, 1, 0, 0, 0);
- // 20038ms, one more frame, as described above (25fps == 40ms/frame).
- TestVideoSender(&sender, 39, 4, 500, 4100);
- // 20039ms, nothing.
- TestVideoSender(&sender, 1, 0, 0, 0);
+ TestVideoSender(&sender, 9961, 1000, 500, 1025000);
+ // 9998ms, nothing.
+ TestVideoSender(&sender, 37, 0, 0, 0);
+ // 19961ms, 250 more frames.
+ TestVideoSender(&sender, 9963, 1000, 500, 1025000);
+ // 19998ms, nothing.
+ TestVideoSender(&sender, 37, 0, 0, 0);
+ // 20001ms, one more frame, as described above (25fps == 40ms/frame).
+ TestVideoSender(&sender, 3, 4, 500, 4100);
+ // 20038ms, nothing.
+ TestVideoSender(&sender, 37, 0, 0, 0);
}
TEST(BweTestFramework_VideoSenderTest, TestAppendInOrder) {
@@ -973,7 +980,7 @@ TEST(BweTestFramework_VideoSenderTest, FeedbackIneffective) {
VideoSender sender(NULL, &source, kNullEstimator);
EXPECT_EQ(820000u, source.bits_per_second());
- TestVideoSender(&sender, 9998, 1000, 500, 1025000);
+ TestVideoSender(&sender, 9961, 1000, 500, 1025000);
// Make sure feedback has no effect on a regular video sender.
RembFeedback* feedback = new RembFeedback(0, 0, 0, 512000, RTCPReportBlock());
@@ -981,14 +988,14 @@ TEST(BweTestFramework_VideoSenderTest, FeedbackIneffective) {
packets.push_back(feedback);
sender.RunFor(0, &packets);
EXPECT_EQ(820000u, source.bits_per_second());
- TestVideoSender(&sender, 9998, 1000, 500, 1025000);
+ TestVideoSender(&sender, 10000, 1000, 500, 1025000);
}
TEST(BweTestFramework_AdaptiveVideoSenderTest, FeedbackChangesBitrate) {
AdaptiveVideoSource source(0, 25.0f, 820, 0x1234, 0);
VideoSender sender(NULL, &source, kRembEstimator);
EXPECT_EQ(820000u, source.bits_per_second());
- TestVideoSender(&sender, 9998, 1000, 500, 1025000);
+ TestVideoSender(&sender, 9961, 1000, 500, 1025000);
// Make sure we can reduce the bitrate.
RembFeedback* feedback = new RembFeedback(0, 0, 0, 512000, RTCPReportBlock());
@@ -996,7 +1003,7 @@ TEST(BweTestFramework_AdaptiveVideoSenderTest, FeedbackChangesBitrate) {
packets.push_back(feedback);
sender.RunFor(0, &packets);
EXPECT_EQ(512000u, source.bits_per_second());
- TestVideoSender(&sender, 9998, 750, 160, 640000);
+ TestVideoSender(&sender, 10000, 750, 160, 640000);
// Increase the bitrate to the initial bitrate and verify that the output is
// the same.
@@ -1021,7 +1028,7 @@ TEST(BweTestFramework_AdaptiveVideoSenderTest, Paced_FeedbackChangesBitrate) {
packets.push_back(feedback);
sender.RunFor(10000, &packets);
ASSERT_EQ(512000u, source.bits_per_second());
- TestVideoSender(&sender, 9998, 750, 160, 640000);
+ TestVideoSender(&sender, 10000, 750, 160, 640000);
// Increase the bitrate to the initial bitrate and verify that the output is
// the same.

Powered by Google App Engine
This is Rietveld 408576698