| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 | 28 |
| 29 namespace webrtc { | 29 namespace webrtc { |
| 30 | 30 |
| 31 const uint32_t kSenderSsrc = 0x12345678; | 31 const uint32_t kSenderSsrc = 0x12345678; |
| 32 const uint32_t kRemoteSsrc = 0x23456789; | 32 const uint32_t kRemoteSsrc = 0x23456789; |
| 33 const uint8_t kSeqNo = 13; | 33 const uint8_t kSeqNo = 13; |
| 34 | 34 |
| 35 TEST(RtcpCompoundPacketTest, AppendPacket) { | 35 TEST(RtcpCompoundPacketTest, AppendPacket) { |
| 36 CompoundPacket compound; | 36 CompoundPacket compound; |
| 37 Fir fir; | 37 Fir fir; |
| 38 fir.WithRequestTo(kRemoteSsrc, kSeqNo); | 38 fir.AddRequestTo(kRemoteSsrc, kSeqNo); |
| 39 ReportBlock rb; | 39 ReportBlock rb; |
| 40 ReceiverReport rr; | 40 ReceiverReport rr; |
| 41 rr.From(kSenderSsrc); | 41 rr.SetSenderSsrc(kSenderSsrc); |
| 42 EXPECT_TRUE(rr.WithReportBlock(rb)); | 42 EXPECT_TRUE(rr.AddReportBlock(rb)); |
| 43 compound.Append(&rr); | 43 compound.Append(&rr); |
| 44 compound.Append(&fir); | 44 compound.Append(&fir); |
| 45 | 45 |
| 46 rtc::Buffer packet = compound.Build(); | 46 rtc::Buffer packet = compound.Build(); |
| 47 RtcpPacketParser parser; | 47 RtcpPacketParser parser; |
| 48 parser.Parse(packet.data(), packet.size()); | 48 parser.Parse(packet.data(), packet.size()); |
| 49 EXPECT_EQ(1, parser.receiver_report()->num_packets()); | 49 EXPECT_EQ(1, parser.receiver_report()->num_packets()); |
| 50 EXPECT_EQ(kSenderSsrc, parser.receiver_report()->sender_ssrc()); | 50 EXPECT_EQ(kSenderSsrc, parser.receiver_report()->sender_ssrc()); |
| 51 EXPECT_EQ(1u, parser.receiver_report()->report_blocks().size()); | 51 EXPECT_EQ(1u, parser.receiver_report()->report_blocks().size()); |
| 52 EXPECT_EQ(1, parser.fir()->num_packets()); | 52 EXPECT_EQ(1, parser.fir()->num_packets()); |
| 53 } | 53 } |
| 54 | 54 |
| 55 TEST(RtcpCompoundPacketTest, AppendPacketWithOwnAppendedPacket) { | 55 TEST(RtcpCompoundPacketTest, AppendPacketWithOwnAppendedPacket) { |
| 56 CompoundPacket root; | 56 CompoundPacket root; |
| 57 CompoundPacket leaf; | 57 CompoundPacket leaf; |
| 58 Fir fir; | 58 Fir fir; |
| 59 fir.WithRequestTo(kRemoteSsrc, kSeqNo); | 59 fir.AddRequestTo(kRemoteSsrc, kSeqNo); |
| 60 Bye bye; | 60 Bye bye; |
| 61 ReportBlock rb; | 61 ReportBlock rb; |
| 62 | 62 |
| 63 ReceiverReport rr; | 63 ReceiverReport rr; |
| 64 EXPECT_TRUE(rr.WithReportBlock(rb)); | 64 EXPECT_TRUE(rr.AddReportBlock(rb)); |
| 65 leaf.Append(&rr); | 65 leaf.Append(&rr); |
| 66 leaf.Append(&fir); | 66 leaf.Append(&fir); |
| 67 | 67 |
| 68 SenderReport sr; | 68 SenderReport sr; |
| 69 root.Append(&sr); | 69 root.Append(&sr); |
| 70 root.Append(&bye); | 70 root.Append(&bye); |
| 71 root.Append(&leaf); | 71 root.Append(&leaf); |
| 72 | 72 |
| 73 rtc::Buffer packet = root.Build(); | 73 rtc::Buffer packet = root.Build(); |
| 74 RtcpPacketParser parser; | 74 RtcpPacketParser parser; |
| 75 parser.Parse(packet.data(), packet.size()); | 75 parser.Parse(packet.data(), packet.size()); |
| 76 EXPECT_EQ(1, parser.sender_report()->num_packets()); | 76 EXPECT_EQ(1, parser.sender_report()->num_packets()); |
| 77 EXPECT_EQ(1, parser.receiver_report()->num_packets()); | 77 EXPECT_EQ(1, parser.receiver_report()->num_packets()); |
| 78 EXPECT_EQ(1u, parser.receiver_report()->report_blocks().size()); | 78 EXPECT_EQ(1u, parser.receiver_report()->report_blocks().size()); |
| 79 EXPECT_EQ(1, parser.bye()->num_packets()); | 79 EXPECT_EQ(1, parser.bye()->num_packets()); |
| 80 EXPECT_EQ(1, parser.fir()->num_packets()); | 80 EXPECT_EQ(1, parser.fir()->num_packets()); |
| 81 } | 81 } |
| 82 | 82 |
| 83 TEST(RtcpCompoundPacketTest, BuildWithInputBuffer) { | 83 TEST(RtcpCompoundPacketTest, BuildWithInputBuffer) { |
| 84 CompoundPacket compound; | 84 CompoundPacket compound; |
| 85 Fir fir; | 85 Fir fir; |
| 86 fir.WithRequestTo(kRemoteSsrc, kSeqNo); | 86 fir.AddRequestTo(kRemoteSsrc, kSeqNo); |
| 87 ReportBlock rb; | 87 ReportBlock rb; |
| 88 ReceiverReport rr; | 88 ReceiverReport rr; |
| 89 rr.From(kSenderSsrc); | 89 rr.SetSenderSsrc(kSenderSsrc); |
| 90 EXPECT_TRUE(rr.WithReportBlock(rb)); | 90 EXPECT_TRUE(rr.AddReportBlock(rb)); |
| 91 compound.Append(&rr); | 91 compound.Append(&rr); |
| 92 compound.Append(&fir); | 92 compound.Append(&fir); |
| 93 | 93 |
| 94 const size_t kRrLength = 8; | 94 const size_t kRrLength = 8; |
| 95 const size_t kReportBlockLength = 24; | 95 const size_t kReportBlockLength = 24; |
| 96 const size_t kFirLength = 20; | 96 const size_t kFirLength = 20; |
| 97 | 97 |
| 98 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback { | 98 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback { |
| 99 public: | 99 public: |
| 100 void OnPacketReady(uint8_t* data, size_t length) override { | 100 void OnPacketReady(uint8_t* data, size_t length) override { |
| 101 RtcpPacketParser parser; | 101 RtcpPacketParser parser; |
| 102 parser.Parse(data, length); | 102 parser.Parse(data, length); |
| 103 EXPECT_EQ(1, parser.receiver_report()->num_packets()); | 103 EXPECT_EQ(1, parser.receiver_report()->num_packets()); |
| 104 EXPECT_EQ(1u, parser.receiver_report()->report_blocks().size()); | 104 EXPECT_EQ(1u, parser.receiver_report()->report_blocks().size()); |
| 105 EXPECT_EQ(1, parser.fir()->num_packets()); | 105 EXPECT_EQ(1, parser.fir()->num_packets()); |
| 106 ++packets_created_; | 106 ++packets_created_; |
| 107 } | 107 } |
| 108 | 108 |
| 109 int packets_created_ = 0; | 109 int packets_created_ = 0; |
| 110 } verifier; | 110 } verifier; |
| 111 const size_t kBufferSize = kRrLength + kReportBlockLength + kFirLength; | 111 const size_t kBufferSize = kRrLength + kReportBlockLength + kFirLength; |
| 112 uint8_t buffer[kBufferSize]; | 112 uint8_t buffer[kBufferSize]; |
| 113 EXPECT_TRUE(compound.BuildExternalBuffer(buffer, kBufferSize, &verifier)); | 113 EXPECT_TRUE(compound.BuildExternalBuffer(buffer, kBufferSize, &verifier)); |
| 114 EXPECT_EQ(1, verifier.packets_created_); | 114 EXPECT_EQ(1, verifier.packets_created_); |
| 115 } | 115 } |
| 116 | 116 |
| 117 TEST(RtcpCompoundPacketTest, BuildWithTooSmallBuffer_FragmentedSend) { | 117 TEST(RtcpCompoundPacketTest, BuildWithTooSmallBuffer_FragmentedSend) { |
| 118 CompoundPacket compound; | 118 CompoundPacket compound; |
| 119 Fir fir; | 119 Fir fir; |
| 120 fir.WithRequestTo(kRemoteSsrc, kSeqNo); | 120 fir.AddRequestTo(kRemoteSsrc, kSeqNo); |
| 121 ReportBlock rb; | 121 ReportBlock rb; |
| 122 ReceiverReport rr; | 122 ReceiverReport rr; |
| 123 rr.From(kSenderSsrc); | 123 rr.SetSenderSsrc(kSenderSsrc); |
| 124 EXPECT_TRUE(rr.WithReportBlock(rb)); | 124 EXPECT_TRUE(rr.AddReportBlock(rb)); |
| 125 compound.Append(&rr); | 125 compound.Append(&rr); |
| 126 compound.Append(&fir); | 126 compound.Append(&fir); |
| 127 | 127 |
| 128 const size_t kRrLength = 8; | 128 const size_t kRrLength = 8; |
| 129 const size_t kReportBlockLength = 24; | 129 const size_t kReportBlockLength = 24; |
| 130 | 130 |
| 131 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback { | 131 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback { |
| 132 public: | 132 public: |
| 133 void OnPacketReady(uint8_t* data, size_t length) override { | 133 void OnPacketReady(uint8_t* data, size_t length) override { |
| 134 RtcpPacketParser parser; | 134 RtcpPacketParser parser; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 152 | 152 |
| 153 int packets_created_ = 0; | 153 int packets_created_ = 0; |
| 154 } verifier; | 154 } verifier; |
| 155 const size_t kBufferSize = kRrLength + kReportBlockLength; | 155 const size_t kBufferSize = kRrLength + kReportBlockLength; |
| 156 uint8_t buffer[kBufferSize]; | 156 uint8_t buffer[kBufferSize]; |
| 157 EXPECT_TRUE(compound.BuildExternalBuffer(buffer, kBufferSize, &verifier)); | 157 EXPECT_TRUE(compound.BuildExternalBuffer(buffer, kBufferSize, &verifier)); |
| 158 EXPECT_EQ(2, verifier.packets_created_); | 158 EXPECT_EQ(2, verifier.packets_created_); |
| 159 } | 159 } |
| 160 | 160 |
| 161 } // namespace webrtc | 161 } // namespace webrtc |
| OLD | NEW |