| 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 |