| 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 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 RtcEventLogTestHelper::VerifyRtcpEvent(parsed_log, 2, kOutgoingPacket, | 493 RtcEventLogTestHelper::VerifyRtcpEvent(parsed_log, 2, kOutgoingPacket, |
| 494 MediaType::VIDEO, rtcp_packet.data(), | 494 MediaType::VIDEO, rtcp_packet.data(), |
| 495 rtcp_packet.size()); | 495 rtcp_packet.size()); |
| 496 | 496 |
| 497 RtcEventLogTestHelper::VerifyLogEndEvent(parsed_log, 3); | 497 RtcEventLogTestHelper::VerifyLogEndEvent(parsed_log, 3); |
| 498 | 498 |
| 499 // Clean up temporary file - can be pretty slow. | 499 // Clean up temporary file - can be pretty slow. |
| 500 remove(temp_filename.c_str()); | 500 remove(temp_filename.c_str()); |
| 501 } | 501 } |
| 502 | 502 |
| 503 TEST(RtcEventLogTest, LogProbeClusterCreatedAndReadBack) { |
| 504 Random prng(794613); |
| 505 |
| 506 int bitrate_bps0 = prng.Rand(0, 10000000); |
| 507 int bitrate_bps1 = prng.Rand(0, 10000000); |
| 508 int bitrate_bps2 = prng.Rand(0, 10000000); |
| 509 int min_probes0 = prng.Rand(0, 100); |
| 510 int min_probes1 = prng.Rand(0, 100); |
| 511 int min_probes2 = prng.Rand(0, 100); |
| 512 int min_bytes0 = prng.Rand(0, 10000); |
| 513 int min_bytes1 = prng.Rand(0, 10000); |
| 514 int min_bytes2 = prng.Rand(0, 10000); |
| 515 |
| 516 // Find the name of the current test, in order to use it as a temporary |
| 517 // filename. |
| 518 auto test_info = ::testing::UnitTest::GetInstance()->current_test_info(); |
| 519 const std::string temp_filename = |
| 520 test::OutputPath() + test_info->test_case_name() + test_info->name(); |
| 521 |
| 522 rtc::ScopedFakeClock fake_clock; |
| 523 fake_clock.SetTimeMicros(prng.Rand<uint32_t>()); |
| 524 std::unique_ptr<RtcEventLog> log_dumper(RtcEventLog::Create()); |
| 525 |
| 526 log_dumper->StartLogging(temp_filename, 10000000); |
| 527 log_dumper->LogProbeClusterCreated(0, bitrate_bps0, min_probes0, min_bytes0); |
| 528 fake_clock.AdvanceTimeMicros(prng.Rand(1, 1000)); |
| 529 log_dumper->LogProbeClusterCreated(1, bitrate_bps1, min_probes1, min_bytes1); |
| 530 fake_clock.AdvanceTimeMicros(prng.Rand(1, 1000)); |
| 531 log_dumper->LogProbeClusterCreated(2, bitrate_bps2, min_probes2, min_bytes2); |
| 532 fake_clock.AdvanceTimeMicros(prng.Rand(1, 1000)); |
| 533 log_dumper->StopLogging(); |
| 534 |
| 535 // Read the generated file from disk. |
| 536 ParsedRtcEventLog parsed_log; |
| 537 ASSERT_TRUE(parsed_log.ParseFile(temp_filename)); |
| 538 |
| 539 // Verify that what we read back from the event log is the same as |
| 540 // what we wrote down. |
| 541 EXPECT_EQ(5u, parsed_log.GetNumberOfEvents()); |
| 542 RtcEventLogTestHelper::VerifyLogStartEvent(parsed_log, 0); |
| 543 RtcEventLogTestHelper::VerifyBweProbeCluster(parsed_log, 1, 0, bitrate_bps0, |
| 544 min_probes0, min_bytes0); |
| 545 RtcEventLogTestHelper::VerifyBweProbeCluster(parsed_log, 2, 1, bitrate_bps1, |
| 546 min_probes1, min_bytes1); |
| 547 RtcEventLogTestHelper::VerifyBweProbeCluster(parsed_log, 3, 2, bitrate_bps2, |
| 548 min_probes2, min_bytes2); |
| 549 RtcEventLogTestHelper::VerifyLogEndEvent(parsed_log, 4); |
| 550 |
| 551 // Clean up temporary file - can be pretty slow. |
| 552 remove(temp_filename.c_str()); |
| 553 } |
| 554 |
| 555 TEST(RtcEventLogTest, LogProbeResultSuccessAndReadBack) { |
| 556 Random prng(192837); |
| 557 |
| 558 int bitrate_bps0 = prng.Rand(0, 10000000); |
| 559 int bitrate_bps1 = prng.Rand(0, 10000000); |
| 560 int bitrate_bps2 = prng.Rand(0, 10000000); |
| 561 |
| 562 // Find the name of the current test, in order to use it as a temporary |
| 563 // filename. |
| 564 auto test_info = ::testing::UnitTest::GetInstance()->current_test_info(); |
| 565 const std::string temp_filename = |
| 566 test::OutputPath() + test_info->test_case_name() + test_info->name(); |
| 567 |
| 568 rtc::ScopedFakeClock fake_clock; |
| 569 fake_clock.SetTimeMicros(prng.Rand<uint32_t>()); |
| 570 std::unique_ptr<RtcEventLog> log_dumper(RtcEventLog::Create()); |
| 571 |
| 572 log_dumper->StartLogging(temp_filename, 10000000); |
| 573 log_dumper->LogProbeResultSuccess(0, bitrate_bps0); |
| 574 fake_clock.AdvanceTimeMicros(prng.Rand(1, 1000)); |
| 575 log_dumper->LogProbeResultSuccess(1, bitrate_bps1); |
| 576 fake_clock.AdvanceTimeMicros(prng.Rand(1, 1000)); |
| 577 log_dumper->LogProbeResultSuccess(2, bitrate_bps2); |
| 578 fake_clock.AdvanceTimeMicros(prng.Rand(1, 1000)); |
| 579 log_dumper->StopLogging(); |
| 580 |
| 581 // Read the generated file from disk. |
| 582 ParsedRtcEventLog parsed_log; |
| 583 ASSERT_TRUE(parsed_log.ParseFile(temp_filename)); |
| 584 |
| 585 // Verify that what we read back from the event log is the same as |
| 586 // what we wrote down. |
| 587 EXPECT_EQ(5u, parsed_log.GetNumberOfEvents()); |
| 588 RtcEventLogTestHelper::VerifyLogStartEvent(parsed_log, 0); |
| 589 RtcEventLogTestHelper::VerifyProbeResultSuccess(parsed_log, 1, 0, |
| 590 bitrate_bps0); |
| 591 RtcEventLogTestHelper::VerifyProbeResultSuccess(parsed_log, 2, 1, |
| 592 bitrate_bps1); |
| 593 RtcEventLogTestHelper::VerifyProbeResultSuccess(parsed_log, 3, 2, |
| 594 bitrate_bps2); |
| 595 RtcEventLogTestHelper::VerifyLogEndEvent(parsed_log, 4); |
| 596 |
| 597 // Clean up temporary file - can be pretty slow. |
| 598 remove(temp_filename.c_str()); |
| 599 } |
| 600 |
| 601 TEST(RtcEventLogTest, LogProbeResultFailureAndReadBack) { |
| 602 Random prng(192837); |
| 603 |
| 604 // Find the name of the current test, in order to use it as a temporary |
| 605 // filename. |
| 606 auto test_info = ::testing::UnitTest::GetInstance()->current_test_info(); |
| 607 const std::string temp_filename = |
| 608 test::OutputPath() + test_info->test_case_name() + test_info->name(); |
| 609 |
| 610 rtc::ScopedFakeClock fake_clock; |
| 611 fake_clock.SetTimeMicros(prng.Rand<uint32_t>()); |
| 612 std::unique_ptr<RtcEventLog> log_dumper(RtcEventLog::Create()); |
| 613 |
| 614 log_dumper->StartLogging(temp_filename, 10000000); |
| 615 log_dumper->LogProbeResultFailure( |
| 616 0, ProbeFailureReason::kInvalidSendReceiveInterval); |
| 617 fake_clock.AdvanceTimeMicros(prng.Rand(1, 1000)); |
| 618 log_dumper->LogProbeResultFailure( |
| 619 1, ProbeFailureReason::kInvalidSendReceiveRatio); |
| 620 fake_clock.AdvanceTimeMicros(prng.Rand(1, 1000)); |
| 621 log_dumper->LogProbeResultFailure(2, ProbeFailureReason::kTimeout); |
| 622 fake_clock.AdvanceTimeMicros(prng.Rand(1, 1000)); |
| 623 log_dumper->StopLogging(); |
| 624 |
| 625 // Read the generated file from disk. |
| 626 ParsedRtcEventLog parsed_log; |
| 627 ASSERT_TRUE(parsed_log.ParseFile(temp_filename)); |
| 628 |
| 629 // Verify that what we read back from the event log is the same as |
| 630 // what we wrote down. |
| 631 EXPECT_EQ(5u, parsed_log.GetNumberOfEvents()); |
| 632 RtcEventLogTestHelper::VerifyLogStartEvent(parsed_log, 0); |
| 633 RtcEventLogTestHelper::VerifyProbeResultFailure( |
| 634 parsed_log, 1, 0, ProbeFailureReason::kInvalidSendReceiveInterval); |
| 635 RtcEventLogTestHelper::VerifyProbeResultFailure( |
| 636 parsed_log, 2, 1, ProbeFailureReason::kInvalidSendReceiveRatio); |
| 637 RtcEventLogTestHelper::VerifyProbeResultFailure(parsed_log, 3, 2, |
| 638 ProbeFailureReason::kTimeout); |
| 639 RtcEventLogTestHelper::VerifyLogEndEvent(parsed_log, 4); |
| 640 |
| 641 // Clean up temporary file - can be pretty slow. |
| 642 remove(temp_filename.c_str()); |
| 643 } |
| 644 |
| 503 class ConfigReadWriteTest { | 645 class ConfigReadWriteTest { |
| 504 public: | 646 public: |
| 505 ConfigReadWriteTest() : prng(987654321) {} | 647 ConfigReadWriteTest() : prng(987654321) {} |
| 506 virtual ~ConfigReadWriteTest() {} | 648 virtual ~ConfigReadWriteTest() {} |
| 507 virtual void GenerateConfig(uint32_t extensions_bitvector) = 0; | 649 virtual void GenerateConfig(uint32_t extensions_bitvector) = 0; |
| 508 virtual void VerifyConfig(const ParsedRtcEventLog& parsed_log, | 650 virtual void VerifyConfig(const ParsedRtcEventLog& parsed_log, |
| 509 size_t index) = 0; | 651 size_t index) = 0; |
| 510 virtual void LogConfig(RtcEventLog* event_log) = 0; | 652 virtual void LogConfig(RtcEventLog* event_log) = 0; |
| 511 | 653 |
| 512 void DoTest() { | 654 void DoTest() { |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 651 VideoSendConfigReadWriteTest test; | 793 VideoSendConfigReadWriteTest test; |
| 652 test.DoTest(); | 794 test.DoTest(); |
| 653 } | 795 } |
| 654 | 796 |
| 655 TEST(RtcEventLogTest, LogAudioNetworkAdaptation) { | 797 TEST(RtcEventLogTest, LogAudioNetworkAdaptation) { |
| 656 AudioNetworkAdaptationReadWriteTest test; | 798 AudioNetworkAdaptationReadWriteTest test; |
| 657 test.DoTest(); | 799 test.DoTest(); |
| 658 } | 800 } |
| 659 | 801 |
| 660 } // namespace webrtc | 802 } // namespace webrtc |
| OLD | NEW |