Index: webrtc/video/rtc_event_log_unittest.cc |
diff --git a/webrtc/video/rtc_event_log_unittest.cc b/webrtc/video/rtc_event_log_unittest.cc |
index 0c18e750cc79cbd5938890211b8b64d43ee45135..e085d03a89b5d22e8757ad72df95da31f3682091 100644 |
--- a/webrtc/video/rtc_event_log_unittest.cc |
+++ b/webrtc/video/rtc_event_log_unittest.cc |
@@ -17,6 +17,7 @@ |
#include "testing/gtest/include/gtest/gtest.h" |
#include "webrtc/base/checks.h" |
#include "webrtc/base/scoped_ptr.h" |
+#include "webrtc/base/thread.h" |
#include "webrtc/call.h" |
#include "webrtc/system_wrappers/interface/clock.h" |
#include "webrtc/test/test_suite.h" |
@@ -424,6 +425,93 @@ TEST(RtcEventLogTest, LogSessionAndReadBack) { |
LogSessionAndReadBack(9, 2718281828u); |
} |
+void DropOldEvents(unsigned random_seed) { |
stefan-webrtc
2015/09/03 11:13:21
either int or uint32_t?
terelius
2015/09/17 12:44:08
Changed to unsigned int
|
+ std::vector<uint8_t> old_rtp_packet; |
+ std::vector<uint8_t> recent_rtp_packet; |
+ std::vector<uint8_t> old_rtcp_packet; |
+ std::vector<uint8_t> recent_rtcp_packet; |
+ |
+ VideoReceiveStream::Config receiver_config; |
+ VideoSendStream::Config sender_config; |
+ |
+ srand(random_seed); |
+ |
+ // Create two RTP packets containing random data. |
+ const size_t rtp_header_size = 20; |
+ size_t packet_size = 1000 + rand() % 64; |
+ old_rtp_packet.reserve(packet_size); |
+ for (size_t j = 0; j < packet_size; j++) { |
+ old_rtp_packet.push_back(rand()); |
+ } |
+ packet_size = 1000 + rand() % 64; |
+ recent_rtp_packet.reserve(packet_size); |
+ for (size_t j = 0; j < packet_size; j++) { |
+ recent_rtp_packet.push_back(rand()); |
+ } |
+ // Create two RTCP packets containing random data. |
+ packet_size = 1000 + rand() % 64; |
+ old_rtcp_packet.reserve(packet_size); |
+ for (size_t j = 0; j < packet_size; j++) { |
+ old_rtcp_packet.push_back(rand()); |
+ } |
+ packet_size = 1000 + rand() % 64; |
+ recent_rtcp_packet.reserve(packet_size); |
+ for (size_t j = 0; j < packet_size; j++) { |
+ recent_rtcp_packet.push_back(rand()); |
+ } |
+ // Create configurations for the video streams. |
+ GenerateVideoReceiveConfig(&receiver_config); |
+ GenerateVideoSendConfig(&sender_config); |
+ |
+ // 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(); |
+ |
+ // The log file will be flushed to disk when the log_dumper goes out of scope. |
+ { |
+ rtc::scoped_ptr<RtcEventLog> log_dumper(RtcEventLog::Create()); |
+ log_dumper->SetBufferDuration(50000); |
hlundin-webrtc
2015/08/28 11:16:29
Comment on the unit here. 50000 ms? us?
terelius
2015/09/17 12:44:08
Done.
|
+ log_dumper->LogVideoReceiveStreamConfig(receiver_config); |
+ log_dumper->LogVideoSendStreamConfig(sender_config); |
+ log_dumper->LogRtpHeader(false, MediaType::AUDIO, old_rtp_packet.data(), |
+ rtp_header_size, old_rtp_packet.size()); |
+ log_dumper->LogRtcpPacket(true, MediaType::AUDIO, old_rtcp_packet.data(), |
+ old_rtcp_packet.size()); |
+ rtc::Thread::SleepMs(55); |
hlundin-webrtc
2015/08/28 11:16:29
... I guess 50000 us based on this...
terelius
2015/09/17 12:44:08
Done.
|
+ log_dumper->StartLogging(temp_filename, 10000000); |
+ log_dumper->LogRtpHeader(true, MediaType::VIDEO, recent_rtp_packet.data(), |
+ rtp_header_size, recent_rtp_packet.size()); |
+ log_dumper->LogRtcpPacket(false, MediaType::VIDEO, |
+ recent_rtcp_packet.data(), |
+ recent_rtcp_packet.size()); |
+ } |
+ |
+ // Read the generated file from disk. |
+ rtclog::EventStream parsed_stream; |
+ ASSERT_TRUE(RtcEventLog::ParseRtcEventLog(temp_filename, &parsed_stream)); |
+ |
+ // Verify the result. |
hlundin-webrtc
2015/08/28 11:16:29
Please, comment on what you are verifying. In part
terelius
2015/09/17 12:44:08
Done.
|
+ EXPECT_EQ(5, parsed_stream.stream_size()); |
+ VerifyReceiveStreamConfig(parsed_stream.stream(0), receiver_config); |
+ VerifySendStreamConfig(parsed_stream.stream(1), sender_config); |
+ VerifyLogStartEvent(parsed_stream.stream(2)); |
+ VerifyRtpEvent(parsed_stream.stream(3), true, MediaType::VIDEO, |
+ recent_rtp_packet.data(), rtp_header_size, |
+ recent_rtp_packet.size()); |
+ VerifyRtcpEvent(parsed_stream.stream(4), false, MediaType::VIDEO, |
+ recent_rtcp_packet.data(), recent_rtcp_packet.size()); |
+ |
+ // Clean up temporary file - can be pretty slow. |
+ remove(temp_filename.c_str()); |
+} |
+ |
+TEST(RtcEventLogTest, DropOldEvents) { |
+ DropOldEvents(141421356); |
+ DropOldEvents(173205080); |
+} |
+ |
} // namespace webrtc |
#endif // ENABLE_RTC_EVENT_LOG |