OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/test/simple_test_tick_clock.h" | 6 #include "base/test/simple_test_tick_clock.h" |
7 #include "media/cast/cast_environment.h" | 7 #include "media/cast/cast_environment.h" |
8 #include "media/cast/net/cast_net_defines.h" | |
9 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" | 8 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" |
10 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" | 9 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" |
11 #include "media/cast/rtcp/rtcp_receiver.h" | 10 #include "media/cast/rtcp/rtcp_receiver.h" |
12 #include "media/cast/rtcp/rtcp_utility.h" | 11 #include "media/cast/rtcp/rtcp_utility.h" |
13 #include "media/cast/rtcp/test_rtcp_packet_builder.h" | 12 #include "media/cast/rtcp/test_rtcp_packet_builder.h" |
14 #include "media/cast/test/fake_task_runner.h" | 13 #include "media/cast/test/fake_task_runner.h" |
| 14 #include "media/cast/transport/cast_transport_defines.h" |
15 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" |
16 | 16 |
17 namespace media { | 17 namespace media { |
18 namespace cast { | 18 namespace cast { |
19 | 19 |
20 using testing::_; | 20 using testing::_; |
21 | 21 |
22 static const uint32 kSenderSsrc = 0x10203; | 22 static const uint32 kSenderSsrc = 0x10203; |
23 static const uint32 kSourceSsrc = 0x40506; | 23 static const uint32 kSourceSsrc = 0x40506; |
24 static const uint32 kUnknownSsrc = 0xDEAD; | 24 static const uint32 kUnknownSsrc = 0xDEAD; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 bool called_; | 61 bool called_; |
62 }; | 62 }; |
63 | 63 |
64 class RtcpReceiverCastLogVerification : public RtcpReceiverFeedback { | 64 class RtcpReceiverCastLogVerification : public RtcpReceiverFeedback { |
65 public: | 65 public: |
66 RtcpReceiverCastLogVerification() | 66 RtcpReceiverCastLogVerification() |
67 : called_on_received_sender_log_(false), | 67 : called_on_received_sender_log_(false), |
68 called_on_received_receiver_log_(false) {} | 68 called_on_received_receiver_log_(false) {} |
69 | 69 |
70 virtual void OnReceivedSenderReport( | 70 virtual void OnReceivedSenderReport( |
71 const RtcpSenderInfo& remote_sender_info) OVERRIDE {}; | 71 const transport::RtcpSenderInfo& remote_sender_info) OVERRIDE {}; |
72 | 72 |
73 virtual void OnReceiverReferenceTimeReport( | 73 virtual void OnReceiverReferenceTimeReport( |
74 const RtcpReceiverReferenceTimeReport& remote_time_report) OVERRIDE {}; | 74 const RtcpReceiverReferenceTimeReport& remote_time_report) OVERRIDE {}; |
75 | 75 |
76 virtual void OnReceivedSendReportRequest() OVERRIDE {}; | 76 virtual void OnReceivedSendReportRequest() OVERRIDE {}; |
77 | 77 |
78 virtual void OnReceivedReceiverLog( | 78 virtual void OnReceivedReceiverLog( |
79 const RtcpReceiverLogMessage& receiver_log) OVERRIDE { | 79 const RtcpReceiverLogMessage& receiver_log) OVERRIDE { |
80 EXPECT_EQ(expected_receiver_log_.size(), receiver_log.size()); | 80 EXPECT_EQ(expected_receiver_log_.size(), receiver_log.size()); |
81 RtcpReceiverLogMessage::const_iterator expected_it = | 81 RtcpReceiverLogMessage::const_iterator expected_it = |
(...skipping 20 matching lines...) Expand all Loading... |
102 event_incoming_it->delay_delta); | 102 event_incoming_it->delay_delta); |
103 } | 103 } |
104 } | 104 } |
105 expected_receiver_log_.pop_front(); | 105 expected_receiver_log_.pop_front(); |
106 expected_it = expected_receiver_log_.begin(); | 106 expected_it = expected_receiver_log_.begin(); |
107 } | 107 } |
108 called_on_received_receiver_log_ = true; | 108 called_on_received_receiver_log_ = true; |
109 } | 109 } |
110 | 110 |
111 virtual void OnReceivedSenderLog( | 111 virtual void OnReceivedSenderLog( |
112 const RtcpSenderLogMessage& sender_log) OVERRIDE { | 112 const transport::RtcpSenderLogMessage& sender_log) OVERRIDE { |
113 EXPECT_EQ(expected_sender_log_.size(), sender_log.size()); | 113 EXPECT_EQ(expected_sender_log_.size(), sender_log.size()); |
114 | 114 |
115 RtcpSenderLogMessage::const_iterator expected_it = | 115 transport::RtcpSenderLogMessage::const_iterator expected_it = |
116 expected_sender_log_.begin(); | 116 expected_sender_log_.begin(); |
117 RtcpSenderLogMessage::const_iterator incoming_it = sender_log.begin(); | 117 transport::RtcpSenderLogMessage::const_iterator incoming_it = |
| 118 sender_log.begin(); |
118 for (; expected_it != expected_sender_log_.end(); | 119 for (; expected_it != expected_sender_log_.end(); |
119 ++expected_it, ++incoming_it) { | 120 ++expected_it, ++incoming_it) { |
120 EXPECT_EQ(expected_it->frame_status, incoming_it->frame_status); | 121 EXPECT_EQ(expected_it->frame_status, incoming_it->frame_status); |
121 EXPECT_EQ(0xffffff & expected_it->rtp_timestamp, | 122 EXPECT_EQ(0xffffff & expected_it->rtp_timestamp, |
122 incoming_it->rtp_timestamp); | 123 incoming_it->rtp_timestamp); |
123 } | 124 } |
124 called_on_received_sender_log_ = true; | 125 called_on_received_sender_log_ = true; |
125 } | 126 } |
126 | 127 |
127 bool OnReceivedSenderLogCalled() { | 128 bool OnReceivedSenderLogCalled() { |
128 return called_on_received_sender_log_; | 129 return called_on_received_sender_log_; |
129 } | 130 } |
130 | 131 |
131 bool OnReceivedReceiverLogCalled() { | 132 bool OnReceivedReceiverLogCalled() { |
132 return called_on_received_receiver_log_ && expected_receiver_log_.empty(); | 133 return called_on_received_receiver_log_ && expected_receiver_log_.empty(); |
133 } | 134 } |
134 | 135 |
135 void SetExpectedReceiverLog(const RtcpReceiverLogMessage& receiver_log) { | 136 void SetExpectedReceiverLog(const RtcpReceiverLogMessage& receiver_log) { |
136 expected_receiver_log_ = receiver_log; | 137 expected_receiver_log_ = receiver_log; |
137 } | 138 } |
138 | 139 |
139 void SetExpectedSenderLog(const RtcpSenderLogMessage& sender_log) { | 140 void SetExpectedSenderLog(const transport::RtcpSenderLogMessage& sender_log) { |
140 expected_sender_log_ = sender_log; | 141 expected_sender_log_ = sender_log; |
141 } | 142 } |
142 | 143 |
143 private: | 144 private: |
144 RtcpReceiverLogMessage expected_receiver_log_; | 145 RtcpReceiverLogMessage expected_receiver_log_; |
145 RtcpSenderLogMessage expected_sender_log_; | 146 transport::RtcpSenderLogMessage expected_sender_log_; |
146 bool called_on_received_sender_log_; | 147 bool called_on_received_sender_log_; |
147 bool called_on_received_receiver_log_; | 148 bool called_on_received_receiver_log_; |
148 }; | 149 }; |
149 | 150 |
150 } // namespace | 151 } // namespace |
151 | 152 |
152 class RtcpReceiverTest : public ::testing::Test { | 153 class RtcpReceiverTest : public ::testing::Test { |
153 protected: | 154 protected: |
154 RtcpReceiverTest() | 155 RtcpReceiverTest() |
155 : task_runner_(new test::FakeTaskRunner(&testing_clock_)), | 156 : task_runner_(new test::FakeTaskRunner(&testing_clock_)), |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 rtcp_receiver_->IncomingRtcpPacket(&rtcp_parser); | 201 rtcp_receiver_->IncomingRtcpPacket(&rtcp_parser); |
201 } | 202 } |
202 | 203 |
203 base::SimpleTestTickClock testing_clock_; | 204 base::SimpleTestTickClock testing_clock_; |
204 scoped_refptr<test::FakeTaskRunner> task_runner_; | 205 scoped_refptr<test::FakeTaskRunner> task_runner_; |
205 scoped_refptr<CastEnvironment> cast_environment_; | 206 scoped_refptr<CastEnvironment> cast_environment_; |
206 MockRtcpReceiverFeedback mock_receiver_feedback_; | 207 MockRtcpReceiverFeedback mock_receiver_feedback_; |
207 MockRtcpRttFeedback mock_rtt_feedback_; | 208 MockRtcpRttFeedback mock_rtt_feedback_; |
208 MockRtcpSenderFeedback mock_sender_feedback_; | 209 MockRtcpSenderFeedback mock_sender_feedback_; |
209 scoped_ptr<RtcpReceiver> rtcp_receiver_; | 210 scoped_ptr<RtcpReceiver> rtcp_receiver_; |
210 RtcpSenderInfo expected_sender_info_; | 211 transport::RtcpSenderInfo expected_sender_info_; |
211 RtcpReportBlock expected_report_block_; | 212 transport::RtcpReportBlock expected_report_block_; |
212 RtcpReceiverReferenceTimeReport expected_receiver_reference_report_; | 213 RtcpReceiverReferenceTimeReport expected_receiver_reference_report_; |
213 }; | 214 }; |
214 | 215 |
215 TEST_F(RtcpReceiverTest, BrokenPacketIsIgnored) { | 216 TEST_F(RtcpReceiverTest, BrokenPacketIsIgnored) { |
216 const uint8 bad_packet[] = {0, 0, 0, 0}; | 217 const uint8 bad_packet[] = {0, 0, 0, 0}; |
217 InjectRtcpPacket(bad_packet, sizeof(bad_packet)); | 218 InjectRtcpPacket(bad_packet, sizeof(bad_packet)); |
218 } | 219 } |
219 | 220 |
220 TEST_F(RtcpReceiverTest, InjectSenderReportPacket) { | 221 TEST_F(RtcpReceiverTest, InjectSenderReportPacket) { |
221 TestRtcpPacketBuilder p; | 222 TestRtcpPacketBuilder p; |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
450 | 451 |
451 TEST_F(RtcpReceiverTest, InjectSenderReportWithCastSenderLogVerification) { | 452 TEST_F(RtcpReceiverTest, InjectSenderReportWithCastSenderLogVerification) { |
452 RtcpReceiverCastLogVerification cast_log_verification; | 453 RtcpReceiverCastLogVerification cast_log_verification; |
453 RtcpReceiver rtcp_receiver(cast_environment_, | 454 RtcpReceiver rtcp_receiver(cast_environment_, |
454 &mock_sender_feedback_, | 455 &mock_sender_feedback_, |
455 &cast_log_verification, | 456 &cast_log_verification, |
456 &mock_rtt_feedback_, | 457 &mock_rtt_feedback_, |
457 kSourceSsrc); | 458 kSourceSsrc); |
458 rtcp_receiver.SetRemoteSSRC(kSenderSsrc); | 459 rtcp_receiver.SetRemoteSSRC(kSenderSsrc); |
459 | 460 |
460 RtcpSenderLogMessage sender_log; | 461 transport::RtcpSenderLogMessage sender_log; |
461 for (int j = 0; j < 359; ++j) { | 462 for (int j = 0; j < 359; ++j) { |
462 RtcpSenderFrameLogMessage sender_frame_log; | 463 transport::RtcpSenderFrameLogMessage sender_frame_log; |
463 sender_frame_log.frame_status = kRtcpSenderFrameStatusSentToNetwork; | 464 sender_frame_log.frame_status = |
| 465 transport::kRtcpSenderFrameStatusSentToNetwork; |
464 sender_frame_log.rtp_timestamp = kRtpTimestamp + j * 90; | 466 sender_frame_log.rtp_timestamp = kRtpTimestamp + j * 90; |
465 sender_log.push_back(sender_frame_log); | 467 sender_log.push_back(sender_frame_log); |
466 } | 468 } |
467 cast_log_verification.SetExpectedSenderLog(sender_log); | 469 cast_log_verification.SetExpectedSenderLog(sender_log); |
468 | 470 |
469 TestRtcpPacketBuilder p; | 471 TestRtcpPacketBuilder p; |
470 p.AddSr(kSenderSsrc, 0); | 472 p.AddSr(kSenderSsrc, 0); |
471 p.AddSdesCname(kSenderSsrc, kCName); | 473 p.AddSdesCname(kSenderSsrc, kCName); |
472 p.AddSenderLog(kSenderSsrc); | 474 p.AddSenderLog(kSenderSsrc); |
473 | 475 |
474 for (int i = 0; i < 359; ++i) { | 476 for (int i = 0; i < 359; ++i) { |
475 p.AddSenderFrameLog(kRtcpSenderFrameStatusSentToNetwork, | 477 p.AddSenderFrameLog(transport::kRtcpSenderFrameStatusSentToNetwork, |
476 kRtpTimestamp + i * 90); | 478 kRtpTimestamp + i * 90); |
477 } | 479 } |
478 RtcpParser rtcp_parser(p.Packet(), p.Length()); | 480 RtcpParser rtcp_parser(p.Packet(), p.Length()); |
479 rtcp_receiver.IncomingRtcpPacket(&rtcp_parser); | 481 rtcp_receiver.IncomingRtcpPacket(&rtcp_parser); |
480 | 482 |
481 EXPECT_TRUE(cast_log_verification.OnReceivedSenderLogCalled()); | 483 EXPECT_TRUE(cast_log_verification.OnReceivedSenderLogCalled()); |
482 } | 484 } |
483 | 485 |
484 TEST_F(RtcpReceiverTest, InjectReceiverReportWithReceiverLogVerificationBase) { | 486 TEST_F(RtcpReceiverTest, InjectReceiverReportWithReceiverLogVerificationBase) { |
485 static const uint32 kTimeBaseMs = 12345678; | 487 static const uint32 kTimeBaseMs = 12345678; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 EXPECT_CALL(mock_rtt_feedback_, | 576 EXPECT_CALL(mock_rtt_feedback_, |
575 OnReceivedDelaySinceLastReport(kSourceSsrc, kLastSr, kDelayLastSr)). | 577 OnReceivedDelaySinceLastReport(kSourceSsrc, kLastSr, kDelayLastSr)). |
576 Times(1); | 578 Times(1); |
577 | 579 |
578 RtcpParser rtcp_parser(p.Packet(), p.Length()); | 580 RtcpParser rtcp_parser(p.Packet(), p.Length()); |
579 rtcp_receiver.IncomingRtcpPacket(&rtcp_parser); | 581 rtcp_receiver.IncomingRtcpPacket(&rtcp_parser); |
580 | 582 |
581 EXPECT_TRUE(cast_log_verification.OnReceivedReceiverLogCalled()); | 583 EXPECT_TRUE(cast_log_verification.OnReceivedReceiverLogCalled()); |
582 } | 584 } |
583 | 585 |
584 | |
585 | |
586 } // namespace cast | 586 } // namespace cast |
587 } // namespace media | 587 } // namespace media |
OLD | NEW |