OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 |
11 /* | 11 /* |
12 * This file includes unit tests for the RTPSender. | 12 * This file includes unit tests for the RTPSender. |
13 */ | 13 */ |
14 | 14 |
15 #include <list> | 15 #include <list> |
16 #include <vector> | 16 #include <vector> |
17 | 17 |
18 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
20 #include "webrtc/base/buffer.h" | 20 #include "webrtc/base/buffer.h" |
21 #include "webrtc/base/scoped_ptr.h" | 21 #include "webrtc/base/scoped_ptr.h" |
22 #include "webrtc/call/mock/mock_rtc_event_log.h" | 22 #include "webrtc/call/mock/mock_rtc_event_log.h" |
| 23 #include "webrtc/call/rtc_event_log_proxy.h" |
23 #include "webrtc/modules/rtp_rtcp/include/rtp_cvo.h" | 24 #include "webrtc/modules/rtp_rtcp/include/rtp_cvo.h" |
24 #include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" | 25 #include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" |
25 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" | 26 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
26 #include "webrtc/modules/rtp_rtcp/source/rtp_format_video_generic.h" | 27 #include "webrtc/modules/rtp_rtcp/source/rtp_format_video_generic.h" |
27 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h" | 28 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h" |
28 #include "webrtc/modules/rtp_rtcp/source/rtp_sender.h" | 29 #include "webrtc/modules/rtp_rtcp/source/rtp_sender.h" |
29 #include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h" | 30 #include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h" |
30 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h" | 31 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h" |
31 #include "webrtc/system_wrappers/include/stl_util.h" | 32 #include "webrtc/system_wrappers/include/stl_util.h" |
32 #include "webrtc/test/mock_transport.h" | 33 #include "webrtc/test/mock_transport.h" |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 : public TransportSequenceNumberAllocator { | 125 : public TransportSequenceNumberAllocator { |
125 public: | 126 public: |
126 MOCK_METHOD0(AllocateSequenceNumber, uint16_t()); | 127 MOCK_METHOD0(AllocateSequenceNumber, uint16_t()); |
127 }; | 128 }; |
128 | 129 |
129 class RtpSenderTest : public ::testing::Test { | 130 class RtpSenderTest : public ::testing::Test { |
130 protected: | 131 protected: |
131 RtpSenderTest() | 132 RtpSenderTest() |
132 : fake_clock_(kStartTime), | 133 : fake_clock_(kStartTime), |
133 mock_rtc_event_log_(), | 134 mock_rtc_event_log_(), |
| 135 event_log_proxy(&mock_rtc_event_log_), |
134 mock_paced_sender_(), | 136 mock_paced_sender_(), |
135 rtp_sender_(), | 137 rtp_sender_(), |
136 payload_(kPayload), | 138 payload_(kPayload), |
137 transport_(), | 139 transport_(), |
138 kMarkerBit(true) { | 140 kMarkerBit(true) {} |
139 } | |
140 | 141 |
141 void SetUp() override { SetUpRtpSender(true); } | 142 void SetUp() override { SetUpRtpSender(true); } |
142 | 143 |
143 void SetUpRtpSender(bool pacer) { | 144 void SetUpRtpSender(bool pacer) { |
144 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 145 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
145 pacer ? &mock_paced_sender_ : nullptr, | 146 pacer ? &mock_paced_sender_ : nullptr, |
146 &seq_num_allocator_, nullptr, nullptr, | 147 &seq_num_allocator_, nullptr, nullptr, |
147 nullptr, nullptr, &mock_rtc_event_log_)); | 148 nullptr, nullptr, &event_log_proxy)); |
148 rtp_sender_->SetSequenceNumber(kSeqNum); | 149 rtp_sender_->SetSequenceNumber(kSeqNum); |
149 } | 150 } |
150 | 151 |
151 SimulatedClock fake_clock_; | 152 SimulatedClock fake_clock_; |
152 MockRtcEventLog mock_rtc_event_log_; | 153 MockRtcEventLog mock_rtc_event_log_; |
| 154 RtcEventLogProxy event_log_proxy; |
153 MockRtpPacketSender mock_paced_sender_; | 155 MockRtpPacketSender mock_paced_sender_; |
154 MockTransportSequenceNumberAllocator seq_num_allocator_; | 156 MockTransportSequenceNumberAllocator seq_num_allocator_; |
155 rtc::scoped_ptr<RTPSender> rtp_sender_; | 157 rtc::scoped_ptr<RTPSender> rtp_sender_; |
156 int payload_; | 158 int payload_; |
157 LoopbackTransportTest transport_; | 159 LoopbackTransportTest transport_; |
158 const bool kMarkerBit; | 160 const bool kMarkerBit; |
159 uint8_t packet_[kMaxPacketLength]; | 161 uint8_t packet_[kMaxPacketLength]; |
160 | 162 |
161 void VerifyRTPHeaderCommon(const RTPHeader& rtp_header) { | 163 void VerifyRTPHeaderCommon(const RTPHeader& rtp_header) { |
162 VerifyRTPHeaderCommon(rtp_header, kMarkerBit, 0); | 164 VerifyRTPHeaderCommon(rtp_header, kMarkerBit, 0); |
(...skipping 783 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
946 EXPECT_EQ(timestamp, rtp_header.timestamp); | 948 EXPECT_EQ(timestamp, rtp_header.timestamp); |
947 // Verify transmission time offset. This packet is sent without delay. | 949 // Verify transmission time offset. This packet is sent without delay. |
948 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); | 950 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); |
949 uint64_t expected_send_time = | 951 uint64_t expected_send_time = |
950 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 952 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
951 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 953 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
952 } | 954 } |
953 | 955 |
954 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 956 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
955 MockTransport transport; | 957 MockTransport transport; |
956 rtp_sender_.reset(new RTPSender( | 958 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr, |
957 false, &fake_clock_, &transport, nullptr, &mock_paced_sender_, nullptr, | 959 &mock_paced_sender_, nullptr, nullptr, |
958 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_)); | 960 nullptr, nullptr, nullptr, &event_log_proxy)); |
959 rtp_sender_->SetSequenceNumber(kSeqNum); | 961 rtp_sender_->SetSequenceNumber(kSeqNum); |
960 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 962 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); |
961 | 963 |
962 uint16_t seq_num = kSeqNum; | 964 uint16_t seq_num = kSeqNum; |
963 rtp_sender_->SetStorePacketsStatus(true, 10); | 965 rtp_sender_->SetStorePacketsStatus(true, 10); |
964 int32_t rtp_header_len = kRtpHeaderSize; | 966 int32_t rtp_header_len = kRtpHeaderSize; |
965 EXPECT_EQ( | 967 EXPECT_EQ( |
966 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 968 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
967 kAbsoluteSendTimeExtensionId)); | 969 kAbsoluteSendTimeExtensionId)); |
968 rtp_header_len += 4; // 4 bytes extension. | 970 rtp_header_len += 4; // 4 bytes extension. |
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1526 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), | 1528 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), |
1527 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); | 1529 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); |
1528 | 1530 |
1529 // Verify that this packet does have CVO byte. | 1531 // Verify that this packet does have CVO byte. |
1530 VerifyCVOPacket( | 1532 VerifyCVOPacket( |
1531 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), | 1533 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), |
1532 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, | 1534 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, |
1533 hdr.rotation); | 1535 hdr.rotation); |
1534 } | 1536 } |
1535 } // namespace webrtc | 1537 } // namespace webrtc |
OLD | NEW |