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 |