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

Unified Diff: webrtc/call/rtc_event_log_unittest.cc

Issue 2353543003: Added logging for audio send/receive stream configs. (Closed)
Patch Set: Refactored setting of header extensions into separate function. Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/call/rtc_event_log_unittest.cc
diff --git a/webrtc/call/rtc_event_log_unittest.cc b/webrtc/call/rtc_event_log_unittest.cc
index 34e993cf5cd73290db8e6b2bd2b5e16db1ad39bc..75b04e7756a1717a196927c8c37b51b2f4554a70 100644
--- a/webrtc/call/rtc_event_log_unittest.cc
+++ b/webrtc/call/rtc_event_log_unittest.cc
@@ -201,6 +201,35 @@ void GenerateVideoSendConfig(uint32_t extensions_bitvector,
}
}
+void GenerateAudioReceiveConfig(uint32_t extensions_bitvector,
+ AudioReceiveStream::Config* config,
+ Random* prng) {
+ // Add SSRCs for the stream.
+ config->rtp.remote_ssrc = prng->Rand<uint32_t>();
+ config->rtp.local_ssrc = prng->Rand<uint32_t>();
+ // Add header extensions.
+ for (unsigned i = 0; i < kNumExtensions; i++) {
+ if (extensions_bitvector & (1u << i)) {
+ config->rtp.extensions.push_back(
+ RtpExtension(kExtensionNames[i], prng->Rand<int>()));
+ }
+ }
+}
+
+void GenerateAudioSendConfig(uint32_t extensions_bitvector,
+ AudioSendStream::Config* config,
+ Random* prng) {
+ // Add SSRC to the stream.
+ config->rtp.ssrc = prng->Rand<uint32_t>();
+ // Add header extensions.
+ for (unsigned i = 0; i < kNumExtensions; i++) {
+ if (extensions_bitvector & (1u << i)) {
+ config->rtp.extensions.push_back(
+ RtpExtension(kExtensionNames[i], prng->Rand<int>()));
+ }
+ }
+}
+
// Test for the RtcEventLog class. Dumps some RTP packets and other events
// to disk, then reads them back to see if they match.
void LogSessionAndReadBack(size_t rtp_count,
@@ -325,9 +354,10 @@ void LogSessionAndReadBack(size_t rtp_count,
PrintExpectedEvents(rtp_count, rtcp_count, playout_count, bwe_loss_count);
}
RtcEventLogTestHelper::VerifyLogStartEvent(parsed_log, 0);
- RtcEventLogTestHelper::VerifyReceiveStreamConfig(parsed_log, 1,
- receiver_config);
- RtcEventLogTestHelper::VerifySendStreamConfig(parsed_log, 2, sender_config);
+ RtcEventLogTestHelper::VerifyVideoReceiveStreamConfig(parsed_log, 1,
+ receiver_config);
+ RtcEventLogTestHelper::VerifyVideoSendStreamConfig(parsed_log, 2,
+ sender_config);
size_t event_index = config_count + 1;
size_t rtcp_index = 1;
size_t playout_index = 1;
@@ -458,4 +488,138 @@ TEST(RtcEventLogTest, LogEventAndReadBack) {
remove(temp_filename.c_str());
}
+class ConfigReadWriteTest {
+ public:
+ ConfigReadWriteTest() : prng(987654321) {}
+ virtual ~ConfigReadWriteTest() {}
+ virtual void GenerateConfig(uint32_t extensions_bitvector) = 0;
+ virtual void VerifyConfig(const ParsedRtcEventLog& parsed_log,
+ size_t index) = 0;
+ virtual void LogConfig(RtcEventLog* event_log) = 0;
+
+ void DoTest() {
+ // Find the name of the current test, in order to use it as a temporary
+ // filename.
+ auto test_info = ::testing::UnitTest::GetInstance()->current_test_info();
+ const std::string temp_filename =
+ test::OutputPath() + test_info->test_case_name() + test_info->name();
+
+ // Use all extensions.
+ uint32_t extensions_bitvector = (1u << kNumExtensions) - 1;
+ GenerateConfig(extensions_bitvector);
+
+ // Log a single config event and stop logging.
+ SimulatedClock fake_clock(prng.Rand<uint32_t>());
+ std::unique_ptr<RtcEventLog> log_dumper(RtcEventLog::Create(&fake_clock));
+
+ log_dumper->StartLogging(temp_filename, 10000000);
+ LogConfig(log_dumper.get());
+ log_dumper->StopLogging();
+
+ // Read the generated file from disk.
+ ParsedRtcEventLog parsed_log;
+ ASSERT_TRUE(parsed_log.ParseFile(temp_filename));
+
+ // Check the generated number of events.
+ EXPECT_EQ(3u, parsed_log.GetNumberOfEvents());
+
+ RtcEventLogTestHelper::VerifyLogStartEvent(parsed_log, 0);
+
+ // Verify that the parsed config struct matches the one that was logged.
+ VerifyConfig(parsed_log, 1);
+
+ RtcEventLogTestHelper::VerifyLogEndEvent(parsed_log, 2);
+
+ // Clean up temporary file - can be pretty slow.
+ remove(temp_filename.c_str());
+ }
+ Random prng;
+};
+
+class AudioReceiveConfigReadWriteTest : public ConfigReadWriteTest {
+ public:
+ void GenerateConfig(uint32_t extensions_bitvector) override {
+ GenerateAudioReceiveConfig(extensions_bitvector, &config, &prng);
+ }
+ void LogConfig(RtcEventLog* event_log) override {
+ event_log->LogAudioReceiveStreamConfig(config);
+ }
+ void VerifyConfig(const ParsedRtcEventLog& parsed_log,
+ size_t index) override {
+ RtcEventLogTestHelper::VerifyAudioReceiveStreamConfig(parsed_log, index,
+ config);
+ }
+ AudioReceiveStream::Config config;
+};
+
+class AudioSendConfigReadWriteTest : public ConfigReadWriteTest {
+ public:
+ AudioSendConfigReadWriteTest() : config(nullptr) {}
+ void GenerateConfig(uint32_t extensions_bitvector) override {
+ GenerateAudioSendConfig(extensions_bitvector, &config, &prng);
+ }
+ void LogConfig(RtcEventLog* event_log) override {
+ event_log->LogAudioSendStreamConfig(config);
+ }
+ void VerifyConfig(const ParsedRtcEventLog& parsed_log,
+ size_t index) override {
+ RtcEventLogTestHelper::VerifyAudioSendStreamConfig(parsed_log, index,
+ config);
+ }
+ AudioSendStream::Config config;
+};
+
+class VideoReceiveConfigReadWriteTest : public ConfigReadWriteTest {
+ public:
+ VideoReceiveConfigReadWriteTest() : config(nullptr) {}
+ void GenerateConfig(uint32_t extensions_bitvector) override {
+ GenerateVideoReceiveConfig(extensions_bitvector, &config, &prng);
+ }
+ void LogConfig(RtcEventLog* event_log) override {
+ event_log->LogVideoReceiveStreamConfig(config);
+ }
+ void VerifyConfig(const ParsedRtcEventLog& parsed_log,
+ size_t index) override {
+ RtcEventLogTestHelper::VerifyVideoReceiveStreamConfig(parsed_log, index,
+ config);
+ }
+ VideoReceiveStream::Config config;
+};
+
+class VideoSendConfigReadWriteTest : public ConfigReadWriteTest {
+ public:
+ VideoSendConfigReadWriteTest() : config(nullptr) {}
+ void GenerateConfig(uint32_t extensions_bitvector) override {
+ GenerateVideoSendConfig(extensions_bitvector, &config, &prng);
+ }
+ void LogConfig(RtcEventLog* event_log) override {
+ event_log->LogVideoSendStreamConfig(config);
+ }
+ void VerifyConfig(const ParsedRtcEventLog& parsed_log,
+ size_t index) override {
+ RtcEventLogTestHelper::VerifyVideoSendStreamConfig(parsed_log, index,
+ config);
+ }
+ VideoSendStream::Config config;
+};
+
+TEST(RtcEventLogTest, LogAudioReceiveConfig) {
+ AudioReceiveConfigReadWriteTest test;
+ test.DoTest();
+}
+
+TEST(RtcEventLogTest, LogAudioSendConfig) {
+ AudioSendConfigReadWriteTest test;
+ test.DoTest();
+}
+
+TEST(RtcEventLogTest, LogVideoReceiveConfig) {
+ VideoReceiveConfigReadWriteTest test;
+ test.DoTest();
+}
+
+TEST(RtcEventLogTest, LogVideoSendConfig) {
+ VideoSendConfigReadWriteTest test;
+ test.DoTest();
+}
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698