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

Unified Diff: webrtc/video/rtc_event_log_unittest.cc

Issue 1303713002: Keep config events in RtcEventLog even if they are old. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Lock before changing buffer duration Created 5 years, 4 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
« webrtc/video/rtc_event_log.cc ('K') | « webrtc/video/rtc_event_log.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..5109b9f41bf82398040d76d4db299c8543d73aa1 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) {
+ 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);
+ 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(50);
ivoc 2015/08/25 08:03:21 I wonder if the sleep should be a little bit longe
terelius 2015/08/25 16:41:44 On POSIX systems it uses nanosleep() which should
+ 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.
+ 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
« webrtc/video/rtc_event_log.cc ('K') | « webrtc/video/rtc_event_log.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698