| 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/test/simple_test_tick_clock.h" | 5 #include "base/test/simple_test_tick_clock.h" |
| 6 #include "media/cast/cast_defines.h" | 6 #include "media/cast/cast_defines.h" |
| 7 #include "media/cast/cast_environment.h" | 7 #include "media/cast/cast_environment.h" |
| 8 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" | 8 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" |
| 9 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" | 9 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" |
| 10 #include "media/cast/rtcp/rtcp.h" | 10 #include "media/cast/rtcp/rtcp.h" |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 c_name) { | 140 c_name) { |
| 141 } | 141 } |
| 142 | 142 |
| 143 using Rtcp::CheckForWrapAround; | 143 using Rtcp::CheckForWrapAround; |
| 144 using Rtcp::OnReceivedLipSyncInfo; | 144 using Rtcp::OnReceivedLipSyncInfo; |
| 145 }; | 145 }; |
| 146 | 146 |
| 147 class RtcpTest : public ::testing::Test { | 147 class RtcpTest : public ::testing::Test { |
| 148 protected: | 148 protected: |
| 149 RtcpTest() | 149 RtcpTest() |
| 150 : task_runner_(new test::FakeTaskRunner(&testing_clock_)), | 150 : testing_clock_(new base::SimpleTestTickClock()), |
| 151 cast_environment_(new CastEnvironment(&testing_clock_, task_runner_, | 151 task_runner_(new test::FakeTaskRunner(testing_clock_)), |
| 152 cast_environment_(new CastEnvironment( |
| 153 scoped_ptr<base::TickClock>(testing_clock_).Pass(), |
| 152 task_runner_, task_runner_, task_runner_, task_runner_, | 154 task_runner_, task_runner_, task_runner_, task_runner_, |
| 153 task_runner_, GetDefaultCastSenderLoggingConfig())), | 155 task_runner_, task_runner_, GetDefaultCastSenderLoggingConfig())), |
| 154 sender_to_receiver_(&testing_clock_), | 156 sender_to_receiver_(testing_clock_), |
| 155 receiver_to_sender_(cast_environment_, &testing_clock_) { | 157 receiver_to_sender_(cast_environment_, testing_clock_) { |
| 156 testing_clock_.Advance( | 158 testing_clock_->Advance( |
| 157 base::TimeDelta::FromMilliseconds(kStartMillisecond)); | 159 base::TimeDelta::FromMilliseconds(kStartMillisecond)); |
| 158 transport::CastTransportConfig transport_config; | 160 transport::CastTransportConfig transport_config; |
| 159 transport_sender_.reset(new transport::CastTransportSenderImpl( | 161 transport_sender_.reset(new transport::CastTransportSenderImpl( |
| 160 &testing_clock_, | 162 testing_clock_, |
| 161 transport_config, | 163 transport_config, |
| 162 base::Bind(&UpdateCastTransportStatus), task_runner_)); | 164 base::Bind(&UpdateCastTransportStatus), task_runner_)); |
| 163 transport_sender_->InsertFakeTransportForTesting(&sender_to_receiver_); | 165 transport_sender_->InsertFakeTransportForTesting(&sender_to_receiver_); |
| 164 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); | 166 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); |
| 165 } | 167 } |
| 166 | 168 |
| 167 virtual ~RtcpTest() {} | 169 virtual ~RtcpTest() {} |
| 168 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { | 170 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { |
| 169 } | 171 } |
| 170 | 172 |
| 171 void RunTasks(int during_ms) { | 173 void RunTasks(int during_ms) { |
| 172 for (int i = 0; i < during_ms; ++i) { | 174 for (int i = 0; i < during_ms; ++i) { |
| 173 // Call process the timers every 1 ms. | 175 // Call process the timers every 1 ms. |
| 174 testing_clock_.Advance(base::TimeDelta::FromMilliseconds(1)); | 176 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1)); |
| 175 task_runner_->RunTasks(); | 177 task_runner_->RunTasks(); |
| 176 } | 178 } |
| 177 } | 179 } |
| 178 | 180 |
| 179 base::SimpleTestTickClock testing_clock_; | 181 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
| 180 scoped_refptr<test::FakeTaskRunner> task_runner_; | 182 scoped_refptr<test::FakeTaskRunner> task_runner_; |
| 181 scoped_refptr<CastEnvironment> cast_environment_; | 183 scoped_refptr<CastEnvironment> cast_environment_; |
| 182 RtcpTestPacketSender sender_to_receiver_; | 184 RtcpTestPacketSender sender_to_receiver_; |
| 183 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; | 185 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; |
| 184 LocalRtcpTransport receiver_to_sender_; | 186 LocalRtcpTransport receiver_to_sender_; |
| 185 MockRtcpSenderFeedback mock_sender_feedback_; | 187 MockRtcpSenderFeedback mock_sender_feedback_; |
| 186 }; | 188 }; |
| 187 | 189 |
| 188 TEST_F(RtcpTest, TimeToSend) { | 190 TEST_F(RtcpTest, TimeToSend) { |
| 189 base::TimeTicks start_time; | 191 base::TimeTicks start_time; |
| 190 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); | 192 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); |
| 191 Rtcp rtcp(cast_environment_, | 193 Rtcp rtcp(cast_environment_, |
| 192 &mock_sender_feedback_, | 194 &mock_sender_feedback_, |
| 193 transport_sender_.get(), | 195 transport_sender_.get(), |
| 194 &receiver_to_sender_, | 196 &receiver_to_sender_, |
| 195 NULL, | 197 NULL, |
| 196 NULL, | 198 NULL, |
| 197 kRtcpCompound, | 199 kRtcpCompound, |
| 198 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 200 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 199 kSenderSsrc, | 201 kSenderSsrc, |
| 200 kReceiverSsrc, | 202 kReceiverSsrc, |
| 201 kCName); | 203 kCName); |
| 202 receiver_to_sender_.set_rtcp_receiver(&rtcp); | 204 receiver_to_sender_.set_rtcp_receiver(&rtcp); |
| 203 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); | 205 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); |
| 204 EXPECT_GE(start_time + base::TimeDelta::FromMilliseconds( | 206 EXPECT_GE(start_time + base::TimeDelta::FromMilliseconds( |
| 205 kRtcpIntervalMs * 3 / 2), | 207 kRtcpIntervalMs * 3 / 2), |
| 206 rtcp.TimeToSendNextRtcpReport()); | 208 rtcp.TimeToSendNextRtcpReport()); |
| 207 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; | 209 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; |
| 208 testing_clock_.Advance(delta); | 210 testing_clock_->Advance(delta); |
| 209 EXPECT_EQ(testing_clock_.NowTicks(), rtcp.TimeToSendNextRtcpReport()); | 211 EXPECT_EQ(testing_clock_->NowTicks(), rtcp.TimeToSendNextRtcpReport()); |
| 210 } | 212 } |
| 211 | 213 |
| 212 TEST_F(RtcpTest, BasicSenderReport) { | 214 TEST_F(RtcpTest, BasicSenderReport) { |
| 213 Rtcp rtcp(cast_environment_, | 215 Rtcp rtcp(cast_environment_, |
| 214 &mock_sender_feedback_, | 216 &mock_sender_feedback_, |
| 215 transport_sender_.get(), | 217 transport_sender_.get(), |
| 216 NULL, | 218 NULL, |
| 217 NULL, | 219 NULL, |
| 218 NULL, | 220 NULL, |
| 219 kRtcpCompound, | 221 kRtcpCompound, |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); | 618 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); |
| 617 rtp_timestamp = 64000; | 619 rtp_timestamp = 64000; |
| 618 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, | 620 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, |
| 619 &rtp_timestamp_in_ticks)); | 621 &rtp_timestamp_in_ticks)); |
| 620 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), | 622 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), |
| 621 rtp_timestamp_in_ticks); | 623 rtp_timestamp_in_ticks); |
| 622 } | 624 } |
| 623 | 625 |
| 624 } // namespace cast | 626 } // namespace cast |
| 625 } // namespace media | 627 } // namespace media |
| OLD | NEW |