OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
306 | 306 |
307 for (int i = 0; i < 100; ++i) { | 307 for (int i = 0; i < 100; ++i) { |
308 int previous_bitrate = nada_sender_.bitrate_kbps(); | 308 int previous_bitrate = nada_sender_.bitrate_kbps(); |
309 nada_sender_.GiveFeedback(not_congested_fb); | 309 nada_sender_.GiveFeedback(not_congested_fb); |
310 EXPECT_GE(nada_sender_.bitrate_kbps(), previous_bitrate); | 310 EXPECT_GE(nada_sender_.bitrate_kbps(), previous_bitrate); |
311 } | 311 } |
312 EXPECT_EQ(nada_sender_.bitrate_kbps(), kMax); | 312 EXPECT_EQ(nada_sender_.bitrate_kbps(), kMax); |
313 } | 313 } |
314 | 314 |
315 TEST_F(NadaReceiverSideTest, ReceivingRateNoPackets) { | 315 TEST_F(NadaReceiverSideTest, ReceivingRateNoPackets) { |
316 EXPECT_EQ(nada_receiver_.RecentReceivingRate(), static_cast<size_t>(0)); | 316 EXPECT_EQ(nada_receiver_.RecentKbps(), static_cast<size_t>(0)); |
317 } | 317 } |
318 | 318 |
319 TEST_F(NadaReceiverSideTest, ReceivingRateSinglePacket) { | 319 // RecentKbps and RecentReceivingRate are calculated differently. |
320 const size_t kPayloadSizeBytes = 500 * 1000; | 320 // TEST_F(NadaReceiverSideTest, ReceivingRateSinglePacket) { |
stefan-webrtc
2015/07/02 11:03:41
I assume these shouldn't be disabled?
magalhaesc
2015/07/02 17:06:18
Some unittests will be removed as they are not han
| |
321 const int64_t kSendTimeUs = 300 * 1000; | 321 // const size_t kPayloadSizeBytes = 500 * 1000; |
322 const int64_t kArrivalTimeMs = kSendTimeUs / 1000 + 100; | 322 // const int64_t kSendTimeUs = 300 * 1000; |
323 const uint16_t kSequenceNumber = 1; | 323 // const int64_t kArrivalTimeMs = kSendTimeUs / 1000 + 100; |
324 const int64_t kTimeWindowMs = NadaBweReceiver::kReceivingRateTimeWindowMs; | 324 // const uint16_t kSequenceNumber = 1; |
325 // const int64_t kTimeWindowMs = NadaBweReceiver::kReceivingRateTimeWindowMs; | |
325 | 326 |
326 const MediaPacket media_packet(kFlowId, kSendTimeUs, kPayloadSizeBytes, | 327 // const MediaPacket media_packet(kFlowId, kSendTimeUs, kPayloadSizeBytes, |
327 kSequenceNumber); | 328 // kSequenceNumber); |
328 nada_receiver_.ReceivePacket(kArrivalTimeMs, media_packet); | 329 // nada_receiver_.ReceivePacket(kArrivalTimeMs, media_packet); |
329 | 330 |
330 const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeWindowMs; | 331 // const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeWindowMs; |
331 | 332 |
332 EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps); | 333 // EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps); |
333 } | 334 // } |
334 | 335 |
335 TEST_F(NadaReceiverSideTest, ReceivingRateLargePackets) { | 336 // RecentKbps and RecentReceivingRate are calculated differently. |
336 const size_t kPayloadSizeBytes = 3000 * 1000; | 337 // TEST_F(NadaReceiverSideTest, ReceivingRateLargePackets) { |
337 const int64_t kTimeGapMs = 3000; // Between each packet. | 338 // const size_t kPayloadSizeBytes = 3000 * 1000; |
338 const int64_t kOneWayDelayMs = 1000; | 339 // const int64_t kTimeGapMs = 3000; // Between each packet. |
340 // const int64_t kOneWayDelayMs = 1000; | |
339 | 341 |
340 for (int i = 1; i < 5; ++i) { | 342 // for (int i = 1; i < 5; ++i) { |
341 int64_t send_time_us = i * kTimeGapMs * 1000; | 343 // int64_t send_time_us = i * kTimeGapMs * 1000; |
342 int64_t arrival_time_ms = send_time_us / 1000 + kOneWayDelayMs; | 344 // int64_t arrival_time_ms = send_time_us / 1000 + kOneWayDelayMs; |
343 uint16_t sequence_number = i; | 345 // uint16_t sequence_number = i; |
344 const MediaPacket media_packet(kFlowId, send_time_us, kPayloadSizeBytes, | 346 // const MediaPacket media_packet(kFlowId, send_time_us, kPayloadSizeBytes, |
345 sequence_number); | 347 // sequence_number); |
346 nada_receiver_.ReceivePacket(arrival_time_ms, media_packet); | 348 // nada_receiver_.ReceivePacket(arrival_time_ms, media_packet); |
347 } | 349 // } |
348 | 350 |
349 const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeGapMs; | 351 // const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeGapMs; |
350 EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps); | 352 // EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps); |
351 } | 353 // } |
352 | 354 |
353 TEST_F(NadaReceiverSideTest, ReceivingRateSmallPackets) { | 355 // RecentKbps and RecentReceivingRate are calculated differently. |
354 const size_t kPayloadSizeBytes = 100 * 1000; | 356 // TEST_F(NadaReceiverSideTest, ReceivingRateSmallPackets) { |
355 const int64_t kTimeGapMs = 50; // Between each packet. | 357 // const size_t kPayloadSizeBytes = 100 * 1000; |
356 const int64_t kOneWayDelayMs = 50; | 358 // const int64_t kTimeGapMs = 50; // Between each packet. |
359 // const int64_t kOneWayDelayMs = 50; | |
357 | 360 |
358 for (int i = 1; i < 50; ++i) { | 361 // for (int i = 1; i < 50; ++i) { |
359 int64_t send_time_us = i * kTimeGapMs * 1000; | 362 // int64_t send_time_us = i * kTimeGapMs * 1000; |
360 int64_t arrival_time_ms = send_time_us / 1000 + kOneWayDelayMs; | 363 // int64_t arrival_time_ms = send_time_us / 1000 + kOneWayDelayMs; |
361 uint16_t sequence_number = i; | 364 // uint16_t sequence_number = i; |
362 const MediaPacket media_packet(kFlowId, send_time_us, kPayloadSizeBytes, | 365 // const MediaPacket media_packet(kFlowId, send_time_us, kPayloadSizeBytes, |
363 sequence_number); | 366 // sequence_number); |
364 nada_receiver_.ReceivePacket(arrival_time_ms, media_packet); | 367 // nada_receiver_.ReceivePacket(arrival_time_ms, media_packet); |
365 } | 368 // } |
366 | 369 |
367 const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeGapMs; | 370 // const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeGapMs; |
368 EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps); | 371 // RecentKbps and RecentReceivingRate are calculated differently. |
369 } | 372 // EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps); |
373 // } | |
370 | 374 |
371 TEST_F(NadaReceiverSideTest, ReceivingRateIntermittentPackets) { | 375 // RecentKbps and RecentReceivingRate are calculated differently. |
372 const size_t kPayloadSizeBytes = 100 * 1000; | 376 // TEST_F(NadaReceiverSideTest, ReceivingRateIntermittentPackets) { |
373 const int64_t kTimeGapMs = 50; // Between each packet. | 377 // const size_t kPayloadSizeBytes = 100 * 1000; |
374 const int64_t kFirstSendTimeMs = 0; | 378 // const int64_t kTimeGapMs = 50; // Between each packet. |
375 const int64_t kOneWayDelayMs = 50; | 379 // const int64_t kFirstSendTimeMs = 0; |
380 // const int64_t kOneWayDelayMs = 50; | |
376 | 381 |
377 // Gap between first and other packets | 382 // // Gap between first and other packets |
378 const MediaPacket media_packet(kFlowId, kFirstSendTimeMs, kPayloadSizeBytes, | 383 // const MediaPacket media_packet(kFlowId, kFirstSendTimeMs, |
379 1); | 384 // kPayloadSizeBytes, |
380 nada_receiver_.ReceivePacket(kFirstSendTimeMs + kOneWayDelayMs, media_packet); | 385 // 1); |
386 // nada_receiver_.ReceivePacket(kFirstSendTimeMs + kOneWayDelayMs, | |
387 // media_packet); | |
381 | 388 |
382 const int64_t kDelayAfterFirstPacketMs = 1000; | 389 // const int64_t kDelayAfterFirstPacketMs = 1000; |
383 const int kNumPackets = 5; // Small enough so that all packets are covered. | 390 // const int kNumPackets = 5; // Small enough so that all packets are |
384 EXPECT_LT((kNumPackets - 2) * kTimeGapMs, | 391 // covered. |
385 NadaBweReceiver::kReceivingRateTimeWindowMs); | 392 // EXPECT_LT((kNumPackets - 2) * kTimeGapMs, |
386 const int64_t kTimeWindowMs = | 393 // NadaBweReceiver::kReceivingRateTimeWindowMs); |
387 kDelayAfterFirstPacketMs + (kNumPackets - 2) * kTimeGapMs; | 394 // const int64_t kTimeWindowMs = |
395 // kDelayAfterFirstPacketMs + (kNumPackets - 2) * kTimeGapMs; | |
388 | 396 |
389 for (int i = 2; i <= kNumPackets; ++i) { | 397 // for (int i = 2; i <= kNumPackets; ++i) { |
390 int64_t send_time_us = | 398 // int64_t send_time_us = |
391 ((i - 2) * kTimeGapMs + kFirstSendTimeMs + kDelayAfterFirstPacketMs) * | 399 // ((i - 2) * kTimeGapMs + kFirstSendTimeMs + kDelayAfterFirstPacketMs) |
392 1000; | 400 // * |
393 int64_t arrival_time_ms = send_time_us / 1000 + kOneWayDelayMs; | 401 // 1000; |
394 uint16_t sequence_number = i; | 402 // int64_t arrival_time_ms = send_time_us / 1000 + kOneWayDelayMs; |
395 const MediaPacket media_packet(kFlowId, send_time_us, kPayloadSizeBytes, | 403 // uint16_t sequence_number = i; |
396 sequence_number); | 404 // const MediaPacket media_packet(kFlowId, send_time_us, kPayloadSizeBytes, |
397 nada_receiver_.ReceivePacket(arrival_time_ms, media_packet); | 405 // sequence_number); |
398 } | 406 // nada_receiver_.ReceivePacket(arrival_time_ms, media_packet); |
407 // } | |
399 | 408 |
400 const size_t kTotalReceivedKb = 8 * kNumPackets * kPayloadSizeBytes; | 409 // const size_t kTotalReceivedKb = 8 * kNumPackets * kPayloadSizeBytes; |
401 const int64_t kCorrectedTimeWindowMs = | 410 // const int64_t kCorrectedTimeWindowMs = |
402 (kTimeWindowMs * kNumPackets) / (kNumPackets - 1); | 411 // (kTimeWindowMs * kNumPackets) / (kNumPackets - 1); |
403 EXPECT_EQ(nada_receiver_.RecentReceivingRate(), | |
404 kTotalReceivedKb / kCorrectedTimeWindowMs); | |
405 } | |
406 | 412 |
407 TEST_F(NadaReceiverSideTest, ReceivingRateDuplicatedPackets) { | 413 // EXPECT_EQ(nada_receiver_.RecentReceivingRate(), |
408 const size_t kPayloadSizeBytes = 500 * 1000; | 414 // kTotalReceivedKb / kCorrectedTimeWindowMs); |
409 const int64_t kSendTimeUs = 300 * 1000; | 415 // } |
410 const int64_t kArrivalTimeMs = kSendTimeUs / 1000 + 100; | |
411 const uint16_t kSequenceNumber = 1; | |
412 const int64_t kTimeWindowMs = NadaBweReceiver::kReceivingRateTimeWindowMs; | |
413 | 416 |
414 // Insert the same packet twice. | 417 // RecentKbps and RecentReceivingRate are calculated differently. |
415 for (int i = 0; i < 2; ++i) { | 418 // TEST_F(NadaReceiverSideTest, ReceivingRateDuplicatedPackets) { |
416 const MediaPacket media_packet(kFlowId, kSendTimeUs + 50 * i, | 419 // const size_t kPayloadSizeBytes = 500 * 1000; |
417 kPayloadSizeBytes, kSequenceNumber); | 420 // const int64_t kSendTimeUs = 300 * 1000; |
418 nada_receiver_.ReceivePacket(kArrivalTimeMs + 50 * i, media_packet); | 421 // const int64_t kArrivalTimeMs = kSendTimeUs / 1000 + 100; |
419 } | 422 // const uint16_t kSequenceNumber = 1; |
420 // Should be counted only once. | 423 // const int64_t kTimeWindowMs = NadaBweReceiver::kReceivingRateTimeWindowMs; |
421 const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeWindowMs; | |
422 | 424 |
423 EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps); | 425 // // Insert the same packet twice. |
424 } | 426 // for (int i = 0; i < 2; ++i) { |
427 // const MediaPacket media_packet(kFlowId, kSendTimeUs + 50 * i, | |
428 // kPayloadSizeBytes, kSequenceNumber); | |
429 // nada_receiver_.ReceivePacket(kArrivalTimeMs + 50 * i, media_packet); | |
430 // } | |
431 // // Should be counted only once. | |
432 | |
433 // const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeWindowMs; | |
434 // EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps); | |
435 // } | |
425 | 436 |
426 TEST_F(NadaReceiverSideTest, PacketLossNoPackets) { | 437 TEST_F(NadaReceiverSideTest, PacketLossNoPackets) { |
427 EXPECT_EQ(nada_receiver_.RecentPacketLossRatio(), 0.0f); | 438 EXPECT_EQ(nada_receiver_.RecentPacketLossRatio(), 0.0f); |
428 } | 439 } |
429 | 440 |
430 TEST_F(NadaReceiverSideTest, PacketLossSinglePacket) { | 441 TEST_F(NadaReceiverSideTest, PacketLossSinglePacket) { |
431 const MediaPacket media_packet(kFlowId, 0, 0, 0); | 442 const MediaPacket media_packet(kFlowId, 0, 0, 0); |
432 nada_receiver_.ReceivePacket(0, media_packet); | 443 nada_receiver_.ReceivePacket(0, media_packet); |
433 EXPECT_EQ(nada_receiver_.RecentPacketLossRatio(), 0.0f); | 444 EXPECT_EQ(nada_receiver_.RecentPacketLossRatio(), 0.0f); |
434 } | 445 } |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
602 for (int i = 1; i < kNumElements; ++i) { | 613 for (int i = 1; i < kNumElements; ++i) { |
603 EXPECT_EQ( | 614 EXPECT_EQ( |
604 exp_smoothed[i], | 615 exp_smoothed[i], |
605 static_cast<int64_t>(exp_smoothed[i - 1] * (1.0f - kAlpha) + 0.5f)); | 616 static_cast<int64_t>(exp_smoothed[i - 1] * (1.0f - kAlpha) + 0.5f)); |
606 } | 617 } |
607 } | 618 } |
608 | 619 |
609 } // namespace bwe | 620 } // namespace bwe |
610 } // namespace testing | 621 } // namespace testing |
611 } // namespace webrtc | 622 } // namespace webrtc |
OLD | NEW |