OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include "base/test/simple_test_tick_clock.h" | 7 #include "base/test/simple_test_tick_clock.h" |
8 #include "media/cast/cast_defines.h" | 8 #include "media/cast/cast_defines.h" |
9 #include "media/cast/net/cast_transport_config.h" | 9 #include "media/cast/net/cast_transport_config.h" |
10 #include "media/cast/net/cast_transport_sender_impl.h" | 10 #include "media/cast/net/cast_transport_sender_impl.h" |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 kReceiverSsrc); | 263 kReceiverSsrc); |
264 | 264 |
265 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 265 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
266 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 266 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
267 | 267 |
268 base::TimeDelta rtt; | 268 base::TimeDelta rtt; |
269 base::TimeDelta avg_rtt; | 269 base::TimeDelta avg_rtt; |
270 base::TimeDelta min_rtt; | 270 base::TimeDelta min_rtt; |
271 base::TimeDelta max_rtt; | 271 base::TimeDelta max_rtt; |
272 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 272 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
273 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | |
274 | 273 |
275 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1, 1, 1); | 274 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1, 1, 1); |
276 RunTasks(33); | 275 RunTasks(33); |
277 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); | 276 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); |
278 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 277 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
279 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | |
280 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | |
281 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | |
282 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | |
283 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | |
284 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 2, 1, 1); | 278 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 2, 1, 1); |
285 RunTasks(33); | 279 RunTasks(33); |
286 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | |
287 | |
288 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | |
289 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | |
290 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | |
291 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | |
292 } | 280 } |
293 | 281 |
294 TEST_F(RtcpTest, Rtt) { | 282 TEST_F(RtcpTest, Rtt) { |
295 // Media receiver. | 283 // Media receiver. |
296 Rtcp rtcp_receiver(RtcpCastMessageCallback(), | 284 Rtcp rtcp_receiver(RtcpCastMessageCallback(), |
297 RtcpRttCallback(), | 285 RtcpRttCallback(), |
298 RtcpLogMessageCallback(), | 286 RtcpLogMessageCallback(), |
299 testing_clock_, | 287 testing_clock_, |
300 &receiver_to_sender_, | 288 &receiver_to_sender_, |
301 kReceiverSsrc, | 289 kReceiverSsrc, |
(...skipping 11 matching lines...) Expand all Loading... |
313 kReceiverSsrc); | 301 kReceiverSsrc); |
314 | 302 |
315 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 303 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
316 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 304 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
317 | 305 |
318 base::TimeDelta rtt; | 306 base::TimeDelta rtt; |
319 base::TimeDelta avg_rtt; | 307 base::TimeDelta avg_rtt; |
320 base::TimeDelta min_rtt; | 308 base::TimeDelta min_rtt; |
321 base::TimeDelta max_rtt; | 309 base::TimeDelta max_rtt; |
322 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 310 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
323 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | |
324 | 311 |
325 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1, 1, 1); | 312 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1, 1, 1); |
326 RunTasks(33); | 313 RunTasks(33); |
327 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); | 314 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); |
328 | 315 |
329 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 316 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
330 RunTasks(33); | 317 RunTasks(33); |
331 | 318 |
332 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | |
333 RunTasks(33); | 319 RunTasks(33); |
334 | 320 |
335 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | 321 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); |
336 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | 322 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); |
337 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | 323 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); |
338 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 324 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
339 | 325 |
340 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 2, 1, 1); | 326 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 2, 1, 1); |
341 RunTasks(33); | 327 RunTasks(33); |
342 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | |
343 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 2); | |
344 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 2); | |
345 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 2); | |
346 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | |
347 | 328 |
348 receiver_to_sender_.set_short_delay(); | 329 receiver_to_sender_.set_short_delay(); |
349 sender_to_receiver_.set_short_delay(); | 330 sender_to_receiver_.set_short_delay(); |
350 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); | 331 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); |
351 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 332 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
352 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); | 333 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); |
353 EXPECT_NEAR( | 334 EXPECT_NEAR( |
354 (kAddedShortDelay + 3 * kAddedDelay) / 2, avg_rtt.InMilliseconds(), 2); | 335 (kAddedShortDelay + 3 * kAddedDelay) / 2, avg_rtt.InMilliseconds(), 2); |
355 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, min_rtt.InMilliseconds(), 2); | 336 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, min_rtt.InMilliseconds(), 2); |
356 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 337 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
357 | 338 |
358 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 3, 1, 1); | 339 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 3, 1, 1); |
359 RunTasks(33); | 340 RunTasks(33); |
360 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | |
361 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); | |
362 EXPECT_NEAR((2 * kAddedShortDelay + 2 * kAddedDelay) / 2, | |
363 avg_rtt.InMilliseconds(), | |
364 1); | |
365 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 2); | |
366 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | |
367 | 341 |
368 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); | 342 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); |
369 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 343 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
370 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 2); | 344 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 2); |
371 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 2); | 345 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 2); |
372 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); | 346 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 2); |
373 | 347 |
374 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); | 348 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); |
375 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 349 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
376 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 2); | 350 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 2); |
(...skipping 27 matching lines...) Expand all Loading... |
404 | 378 |
405 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); | 379 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); |
406 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 0, 1, 1); | 380 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 0, 1, 1); |
407 RunTasks(33); | 381 RunTasks(33); |
408 | 382 |
409 base::TimeDelta rtt; | 383 base::TimeDelta rtt; |
410 base::TimeDelta avg_rtt; | 384 base::TimeDelta avg_rtt; |
411 base::TimeDelta min_rtt; | 385 base::TimeDelta min_rtt; |
412 base::TimeDelta max_rtt; | 386 base::TimeDelta max_rtt; |
413 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 387 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
414 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | |
415 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); | |
416 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); | |
417 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); | |
418 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | |
419 | 388 |
420 receiver_to_sender_.set_short_delay(); | 389 receiver_to_sender_.set_short_delay(); |
421 sender_to_receiver_.set_short_delay(); | 390 sender_to_receiver_.set_short_delay(); |
422 receiver_to_sender_.set_drop_packets(true); | 391 receiver_to_sender_.set_drop_packets(true); |
423 | 392 |
424 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); | 393 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats_); |
425 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1, 1, 1); | 394 rtcp_sender.SendRtcpFromRtpSender(testing_clock_->NowTicks(), 1, 1, 1); |
426 RunTasks(33); | 395 RunTasks(33); |
427 | 396 |
428 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | |
429 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 2); | |
430 } | 397 } |
431 | 398 |
432 TEST_F(RtcpTest, NtpAndTime) { | 399 TEST_F(RtcpTest, NtpAndTime) { |
433 const int64 kSecondsbetweenYear1900and2010 = INT64_C(40176 * 24 * 60 * 60); | 400 const int64 kSecondsbetweenYear1900and2010 = INT64_C(40176 * 24 * 60 * 60); |
434 const int64 kSecondsbetweenYear1900and2030 = INT64_C(47481 * 24 * 60 * 60); | 401 const int64 kSecondsbetweenYear1900and2030 = INT64_C(47481 * 24 * 60 * 60); |
435 | 402 |
436 uint32 ntp_seconds_1 = 0; | 403 uint32 ntp_seconds_1 = 0; |
437 uint32 ntp_fraction_1 = 0; | 404 uint32 ntp_fraction_1 = 0; |
438 base::TimeTicks input_time = base::TimeTicks::Now(); | 405 base::TimeTicks input_time = base::TimeTicks::Now(); |
439 ConvertTimeTicksToNtp(input_time, &ntp_seconds_1, &ntp_fraction_1); | 406 ConvertTimeTicksToNtp(input_time, &ntp_seconds_1, &ntp_fraction_1); |
(...skipping 30 matching lines...) Expand all Loading... |
470 base::TimeTicks out_3 = ConvertNtpToTimeTicks(ntp_seconds_3, ntp_fraction_3); | 437 base::TimeTicks out_3 = ConvertNtpToTimeTicks(ntp_seconds_3, ntp_fraction_3); |
471 EXPECT_EQ(input_time, out_3); // Verify inverse. | 438 EXPECT_EQ(input_time, out_3); // Verify inverse. |
472 | 439 |
473 // Verify delta. | 440 // Verify delta. |
474 EXPECT_EQ((out_3 - out_2), time_delta); | 441 EXPECT_EQ((out_3 - out_2), time_delta); |
475 EXPECT_NEAR((ntp_fraction_3 - ntp_fraction_2), 0xffffffff / 2, 1); | 442 EXPECT_NEAR((ntp_fraction_3 - ntp_fraction_2), 0xffffffff / 2, 1); |
476 } | 443 } |
477 | 444 |
478 } // namespace cast | 445 } // namespace cast |
479 } // namespace media | 446 } // namespace media |
OLD | NEW |