1 /*
2 * Copyright 2019 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "api/transport/test/create_feedback_generator.h"
12 #include "test/gtest.h"
13
14 namespace webrtc {
TEST(FeedbackGeneratorTest,ReportsFeedbackForSentPackets)15 TEST(FeedbackGeneratorTest, ReportsFeedbackForSentPackets) {
16 size_t kPacketSize = 1000;
17 auto gen = CreateFeedbackGenerator(FeedbackGenerator::Config());
18 for (int i = 0; i < 10; ++i) {
19 gen->SendPacket(kPacketSize);
20 gen->Sleep(TimeDelta::Millis(50));
21 }
22 auto feedback_list = gen->PopFeedback();
23 EXPECT_GT(feedback_list.size(), 0u);
24 for (const auto& feedback : feedback_list) {
25 EXPECT_GT(feedback.packet_feedbacks.size(), 0u);
26 for (const auto& packet : feedback.packet_feedbacks) {
27 EXPECT_EQ(packet.sent_packet.size.bytes<size_t>(), kPacketSize);
28 }
29 }
30 }
31
TEST(FeedbackGeneratorTest,FeedbackIncludesLostPackets)32 TEST(FeedbackGeneratorTest, FeedbackIncludesLostPackets) {
33 size_t kPacketSize = 1000;
34 auto gen = CreateFeedbackGenerator(FeedbackGenerator::Config());
35 BuiltInNetworkBehaviorConfig send_config_with_loss;
36 send_config_with_loss.loss_percent = 50;
37 gen->SetSendConfig(send_config_with_loss);
38 for (int i = 0; i < 20; ++i) {
39 gen->SendPacket(kPacketSize);
40 gen->Sleep(TimeDelta::Millis(5));
41 }
42 auto feedback_list = gen->PopFeedback();
43 ASSERT_GT(feedback_list.size(), 0u);
44 EXPECT_NEAR(feedback_list[0].LostWithSendInfo().size(),
45 feedback_list[0].ReceivedWithSendInfo().size(), 2);
46 }
47 } // namespace webrtc
48