Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Side by Side Diff: webrtc/call/rtc_event_log_unittest.cc

Issue 1696203002: [rtp_rtcp] rtc::scoped_ptr<rtcp::RawPacket> replaced with rtc::Buffer (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 packet, payload_type, marker_bit, capture_timestamp, capture_time_ms, 343 packet, payload_type, marker_bit, capture_timestamp, capture_time_ms,
344 timestamp_provided, inc_sequence_number); 344 timestamp_provided, inc_sequence_number);
345 345
346 for (size_t i = header_size; i < packet_size; i++) { 346 for (size_t i = header_size; i < packet_size; i++) {
347 packet[i] = prng->Rand<uint8_t>(); 347 packet[i] = prng->Rand<uint8_t>();
348 } 348 }
349 349
350 return header_size; 350 return header_size;
351 } 351 }
352 352
353 rtc::scoped_ptr<rtcp::RawPacket> GenerateRtcpPacket(Random* prng) { 353 rtc::Buffer GenerateRtcpPacket(Random* prng) {
354 rtcp::ReportBlock report_block; 354 rtcp::ReportBlock report_block;
355 report_block.To(prng->Rand<uint32_t>()); // Remote SSRC. 355 report_block.To(prng->Rand<uint32_t>()); // Remote SSRC.
356 report_block.WithFractionLost(prng->Rand(50)); 356 report_block.WithFractionLost(prng->Rand(50));
357 357
358 rtcp::SenderReport sender_report; 358 rtcp::SenderReport sender_report;
359 sender_report.From(prng->Rand<uint32_t>()); // Sender SSRC. 359 sender_report.From(prng->Rand<uint32_t>()); // Sender SSRC.
360 sender_report.WithNtp( 360 sender_report.WithNtp(
361 NtpTime(prng->Rand<uint32_t>(), prng->Rand<uint32_t>())); 361 NtpTime(prng->Rand<uint32_t>(), prng->Rand<uint32_t>()));
362 sender_report.WithPacketCount(prng->Rand<uint32_t>()); 362 sender_report.WithPacketCount(prng->Rand<uint32_t>());
363 sender_report.WithReportBlock(report_block); 363 sender_report.WithReportBlock(report_block);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 size_t rtcp_count, 420 size_t rtcp_count,
421 size_t playout_count, 421 size_t playout_count,
422 size_t bwe_loss_count, 422 size_t bwe_loss_count,
423 uint32_t extensions_bitvector, 423 uint32_t extensions_bitvector,
424 uint32_t csrcs_count, 424 uint32_t csrcs_count,
425 unsigned int random_seed) { 425 unsigned int random_seed) {
426 ASSERT_LE(rtcp_count, rtp_count); 426 ASSERT_LE(rtcp_count, rtp_count);
427 ASSERT_LE(playout_count, rtp_count); 427 ASSERT_LE(playout_count, rtp_count);
428 ASSERT_LE(bwe_loss_count, rtp_count); 428 ASSERT_LE(bwe_loss_count, rtp_count);
429 std::vector<rtc::Buffer> rtp_packets; 429 std::vector<rtc::Buffer> rtp_packets;
430 std::vector<rtc::scoped_ptr<rtcp::RawPacket> > rtcp_packets; 430 std::vector<rtc::Buffer> rtcp_packets;
431 std::vector<size_t> rtp_header_sizes; 431 std::vector<size_t> rtp_header_sizes;
432 std::vector<uint32_t> playout_ssrcs; 432 std::vector<uint32_t> playout_ssrcs;
433 std::vector<std::pair<int32_t, uint8_t> > bwe_loss_updates; 433 std::vector<std::pair<int32_t, uint8_t> > bwe_loss_updates;
434 434
435 VideoReceiveStream::Config receiver_config(nullptr); 435 VideoReceiveStream::Config receiver_config(nullptr);
436 VideoSendStream::Config sender_config(nullptr); 436 VideoSendStream::Config sender_config(nullptr);
437 437
438 Random prng(random_seed); 438 Random prng(random_seed);
439 439
440 // Create rtp_count RTP packets containing random data. 440 // Create rtp_count RTP packets containing random data.
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 size_t bwe_loss_index = 1; 481 size_t bwe_loss_index = 1;
482 for (size_t i = 1; i <= rtp_count; i++) { 482 for (size_t i = 1; i <= rtp_count; i++) {
483 log_dumper->LogRtpHeader( 483 log_dumper->LogRtpHeader(
484 (i % 2 == 0) ? kIncomingPacket : kOutgoingPacket, 484 (i % 2 == 0) ? kIncomingPacket : kOutgoingPacket,
485 (i % 3 == 0) ? MediaType::AUDIO : MediaType::VIDEO, 485 (i % 3 == 0) ? MediaType::AUDIO : MediaType::VIDEO,
486 rtp_packets[i - 1].data(), rtp_packets[i - 1].size()); 486 rtp_packets[i - 1].data(), rtp_packets[i - 1].size());
487 if (i * rtcp_count >= rtcp_index * rtp_count) { 487 if (i * rtcp_count >= rtcp_index * rtp_count) {
488 log_dumper->LogRtcpPacket( 488 log_dumper->LogRtcpPacket(
489 (rtcp_index % 2 == 0) ? kIncomingPacket : kOutgoingPacket, 489 (rtcp_index % 2 == 0) ? kIncomingPacket : kOutgoingPacket,
490 rtcp_index % 3 == 0 ? MediaType::AUDIO : MediaType::VIDEO, 490 rtcp_index % 3 == 0 ? MediaType::AUDIO : MediaType::VIDEO,
491 rtcp_packets[rtcp_index - 1]->Buffer(), 491 rtcp_packets[rtcp_index - 1].data(),
492 rtcp_packets[rtcp_index - 1]->Length()); 492 rtcp_packets[rtcp_index - 1].size());
493 rtcp_index++; 493 rtcp_index++;
494 } 494 }
495 if (i * playout_count >= playout_index * rtp_count) { 495 if (i * playout_count >= playout_index * rtp_count) {
496 log_dumper->LogAudioPlayout(playout_ssrcs[playout_index - 1]); 496 log_dumper->LogAudioPlayout(playout_ssrcs[playout_index - 1]);
497 playout_index++; 497 playout_index++;
498 } 498 }
499 if (i * bwe_loss_count >= bwe_loss_index * rtp_count) { 499 if (i * bwe_loss_count >= bwe_loss_index * rtp_count) {
500 log_dumper->LogBwePacketLossEvent( 500 log_dumper->LogBwePacketLossEvent(
501 bwe_loss_updates[bwe_loss_index - 1].first, 501 bwe_loss_updates[bwe_loss_index - 1].first,
502 bwe_loss_updates[bwe_loss_index - 1].second, i); 502 bwe_loss_updates[bwe_loss_index - 1].second, i);
(...skipping 26 matching lines...) Expand all
529 VerifyRtpEvent(parsed_stream.stream(event_index), 529 VerifyRtpEvent(parsed_stream.stream(event_index),
530 (i % 2 == 0), // Every second packet is incoming. 530 (i % 2 == 0), // Every second packet is incoming.
531 (i % 3 == 0) ? MediaType::AUDIO : MediaType::VIDEO, 531 (i % 3 == 0) ? MediaType::AUDIO : MediaType::VIDEO,
532 rtp_packets[i - 1].data(), rtp_header_sizes[i - 1], 532 rtp_packets[i - 1].data(), rtp_header_sizes[i - 1],
533 rtp_packets[i - 1].size()); 533 rtp_packets[i - 1].size());
534 event_index++; 534 event_index++;
535 if (i * rtcp_count >= rtcp_index * rtp_count) { 535 if (i * rtcp_count >= rtcp_index * rtp_count) {
536 VerifyRtcpEvent(parsed_stream.stream(event_index), 536 VerifyRtcpEvent(parsed_stream.stream(event_index),
537 rtcp_index % 2 == 0, // Every second packet is incoming. 537 rtcp_index % 2 == 0, // Every second packet is incoming.
538 rtcp_index % 3 == 0 ? MediaType::AUDIO : MediaType::VIDEO, 538 rtcp_index % 3 == 0 ? MediaType::AUDIO : MediaType::VIDEO,
539 rtcp_packets[rtcp_index - 1]->Buffer(), 539 rtcp_packets[rtcp_index - 1].data(),
540 rtcp_packets[rtcp_index - 1]->Length()); 540 rtcp_packets[rtcp_index - 1].size());
541 event_index++; 541 event_index++;
542 rtcp_index++; 542 rtcp_index++;
543 } 543 }
544 if (i * playout_count >= playout_index * rtp_count) { 544 if (i * playout_count >= playout_index * rtp_count) {
545 VerifyPlayoutEvent(parsed_stream.stream(event_index), 545 VerifyPlayoutEvent(parsed_stream.stream(event_index),
546 playout_ssrcs[playout_index - 1]); 546 playout_ssrcs[playout_index - 1]);
547 event_index++; 547 event_index++;
548 playout_index++; 548 playout_index++;
549 } 549 }
550 if (i * bwe_loss_count >= bwe_loss_index * rtp_count) { 550 if (i * bwe_loss_count >= bwe_loss_index * rtp_count) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 } 597 }
598 } 598 }
599 599
600 // Tests that the event queue works correctly, i.e. drops old RTP, RTCP and 600 // Tests that the event queue works correctly, i.e. drops old RTP, RTCP and
601 // debug events, but keeps config events even if they are older than the limit. 601 // debug events, but keeps config events even if they are older than the limit.
602 void DropOldEvents(uint32_t extensions_bitvector, 602 void DropOldEvents(uint32_t extensions_bitvector,
603 uint32_t csrcs_count, 603 uint32_t csrcs_count,
604 unsigned int random_seed) { 604 unsigned int random_seed) {
605 rtc::Buffer old_rtp_packet; 605 rtc::Buffer old_rtp_packet;
606 rtc::Buffer recent_rtp_packet; 606 rtc::Buffer recent_rtp_packet;
607 rtc::scoped_ptr<rtcp::RawPacket> old_rtcp_packet; 607 rtc::Buffer old_rtcp_packet;
608 rtc::scoped_ptr<rtcp::RawPacket> recent_rtcp_packet; 608 rtc::Buffer recent_rtcp_packet;
609 609
610 VideoReceiveStream::Config receiver_config(nullptr); 610 VideoReceiveStream::Config receiver_config(nullptr);
611 VideoSendStream::Config sender_config(nullptr); 611 VideoSendStream::Config sender_config(nullptr);
612 612
613 Random prng(random_seed); 613 Random prng(random_seed);
614 614
615 // Create two RTP packets containing random data. 615 // Create two RTP packets containing random data.
616 size_t packet_size = prng.Rand(1000, 1100); 616 size_t packet_size = prng.Rand(1000, 1100);
617 old_rtp_packet.SetSize(packet_size); 617 old_rtp_packet.SetSize(packet_size);
618 GenerateRtpPacket(extensions_bitvector, csrcs_count, old_rtp_packet.data(), 618 GenerateRtpPacket(extensions_bitvector, csrcs_count, old_rtp_packet.data(),
(...skipping 21 matching lines...) Expand all
640 // The log file will be flushed to disk when the log_dumper goes out of scope. 640 // The log file will be flushed to disk when the log_dumper goes out of scope.
641 { 641 {
642 rtc::scoped_ptr<RtcEventLog> log_dumper(RtcEventLog::Create()); 642 rtc::scoped_ptr<RtcEventLog> log_dumper(RtcEventLog::Create());
643 // Reduce the time old events are stored to 50 ms. 643 // Reduce the time old events are stored to 50 ms.
644 log_dumper->SetBufferDuration(50000); 644 log_dumper->SetBufferDuration(50000);
645 log_dumper->LogVideoReceiveStreamConfig(receiver_config); 645 log_dumper->LogVideoReceiveStreamConfig(receiver_config);
646 log_dumper->LogVideoSendStreamConfig(sender_config); 646 log_dumper->LogVideoSendStreamConfig(sender_config);
647 log_dumper->LogRtpHeader(kOutgoingPacket, MediaType::AUDIO, 647 log_dumper->LogRtpHeader(kOutgoingPacket, MediaType::AUDIO,
648 old_rtp_packet.data(), old_rtp_packet.size()); 648 old_rtp_packet.data(), old_rtp_packet.size());
649 log_dumper->LogRtcpPacket(kIncomingPacket, MediaType::AUDIO, 649 log_dumper->LogRtcpPacket(kIncomingPacket, MediaType::AUDIO,
650 old_rtcp_packet->Buffer(), 650 old_rtcp_packet.data(),
651 old_rtcp_packet->Length()); 651 old_rtcp_packet.size());
652 // Sleep 55 ms to let old events be removed from the queue. 652 // Sleep 55 ms to let old events be removed from the queue.
653 rtc::Thread::SleepMs(55); 653 rtc::Thread::SleepMs(55);
654 log_dumper->StartLogging(temp_filename, 10000000); 654 log_dumper->StartLogging(temp_filename, 10000000);
655 log_dumper->LogRtpHeader(kIncomingPacket, MediaType::VIDEO, 655 log_dumper->LogRtpHeader(kIncomingPacket, MediaType::VIDEO,
656 recent_rtp_packet.data(), 656 recent_rtp_packet.data(),
657 recent_rtp_packet.size()); 657 recent_rtp_packet.size());
658 log_dumper->LogRtcpPacket(kOutgoingPacket, MediaType::VIDEO, 658 log_dumper->LogRtcpPacket(kOutgoingPacket, MediaType::VIDEO,
659 recent_rtcp_packet->Buffer(), 659 recent_rtcp_packet.data(),
660 recent_rtcp_packet->Length()); 660 recent_rtcp_packet.size());
661 } 661 }
662 662
663 // Read the generated file from disk. 663 // Read the generated file from disk.
664 rtclog::EventStream parsed_stream; 664 rtclog::EventStream parsed_stream;
665 ASSERT_TRUE(RtcEventLog::ParseRtcEventLog(temp_filename, &parsed_stream)); 665 ASSERT_TRUE(RtcEventLog::ParseRtcEventLog(temp_filename, &parsed_stream));
666 666
667 // Verify that what we read back from the event log is the same as 667 // Verify that what we read back from the event log is the same as
668 // what we wrote. Old RTP and RTCP events should have been discarded, 668 // what we wrote. Old RTP and RTCP events should have been discarded,
669 // but old configuration events should still be available. 669 // but old configuration events should still be available.
670 EXPECT_EQ(5, parsed_stream.stream_size()); 670 EXPECT_EQ(5, parsed_stream.stream_size());
671 VerifyReceiveStreamConfig(parsed_stream.stream(0), receiver_config); 671 VerifyReceiveStreamConfig(parsed_stream.stream(0), receiver_config);
672 VerifySendStreamConfig(parsed_stream.stream(1), sender_config); 672 VerifySendStreamConfig(parsed_stream.stream(1), sender_config);
673 VerifyLogStartEvent(parsed_stream.stream(2)); 673 VerifyLogStartEvent(parsed_stream.stream(2));
674 VerifyRtpEvent(parsed_stream.stream(3), true, MediaType::VIDEO, 674 VerifyRtpEvent(parsed_stream.stream(3), true, MediaType::VIDEO,
675 recent_rtp_packet.data(), recent_header_size, 675 recent_rtp_packet.data(), recent_header_size,
676 recent_rtp_packet.size()); 676 recent_rtp_packet.size());
677 VerifyRtcpEvent(parsed_stream.stream(4), false, MediaType::VIDEO, 677 VerifyRtcpEvent(parsed_stream.stream(4), false, MediaType::VIDEO,
678 recent_rtcp_packet->Buffer(), recent_rtcp_packet->Length()); 678 recent_rtcp_packet.data(), recent_rtcp_packet.size());
679 679
680 // Clean up temporary file - can be pretty slow. 680 // Clean up temporary file - can be pretty slow.
681 remove(temp_filename.c_str()); 681 remove(temp_filename.c_str());
682 } 682 }
683 683
684 TEST(RtcEventLogTest, DropOldEvents) { 684 TEST(RtcEventLogTest, DropOldEvents) {
685 // Enable all header extensions 685 // Enable all header extensions
686 uint32_t extensions = (1u << kNumExtensions) - 1; 686 uint32_t extensions = (1u << kNumExtensions) - 1;
687 uint32_t csrcs_count = 2; 687 uint32_t csrcs_count = 2;
688 DropOldEvents(extensions, csrcs_count, 141421356); 688 DropOldEvents(extensions, csrcs_count, 141421356);
689 DropOldEvents(extensions, csrcs_count, 173205080); 689 DropOldEvents(extensions, csrcs_count, 173205080);
690 } 690 }
691 691
692 } // namespace webrtc 692 } // namespace webrtc
693 693
694 #endif // ENABLE_RTC_EVENT_LOG 694 #endif // ENABLE_RTC_EVENT_LOG
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698