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

Unified Diff: media/cast/logging/encoding_event_subscriber_unittest.cc

Issue 165723002: Cast: Implemented size limiting and event filtering in EncodingEventSubscriber. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
Index: media/cast/logging/encoding_event_subscriber_unittest.cc
diff --git a/media/cast/logging/encoding_event_subscriber_unittest.cc b/media/cast/logging/encoding_event_subscriber_unittest.cc
index 831bea7e4052130ce1a2ba88a1d4269ea5d09334..3fa2b1c38f961322b45a59f981ff04529c032edf 100644
--- a/media/cast/logging/encoding_event_subscriber_unittest.cc
+++ b/media/cast/logging/encoding_event_subscriber_unittest.cc
@@ -20,29 +20,162 @@ using media::cast::proto::BasePacketEvent;
namespace media {
namespace cast {
+namespace {
+
+EncodingEventSubscriberConfig GetConfig(EventMediaType event_media_type) {
+ EncodingEventSubscriberConfig config;
+ config.event_media_type = event_media_type;
+ config.max_frames = 10;
+ config.max_generic_event_values = 10;
+ return config;
+}
+}
+
class EncodingEventSubscriberTest : public ::testing::Test {
protected:
EncodingEventSubscriberTest()
: testing_clock_(new base::SimpleTestTickClock()),
task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)),
cast_environment_(new CastEnvironment(
- scoped_ptr<base::TickClock>(testing_clock_).Pass(), task_runner_,
- task_runner_, task_runner_, task_runner_, task_runner_,
- task_runner_, GetLoggingConfigWithRawEventsAndStatsEnabled())) {
- cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber_);
+ scoped_ptr<base::TickClock>(testing_clock_).Pass(),
+ task_runner_,
+ task_runner_,
+ task_runner_,
+ task_runner_,
+ task_runner_,
+ task_runner_,
+ GetLoggingConfigWithRawEventsAndStatsEnabled())) {}
+
+ void Init(EncodingEventSubscriberConfig config) {
+ DCHECK(!event_subscriber_);
+ event_subscriber_.reset(new EncodingEventSubscriber(config));
+ cast_environment_->Logging()->AddRawEventSubscriber(
+ event_subscriber_.get());
}
virtual ~EncodingEventSubscriberTest() {
- cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber_);
+ if (event_subscriber_) {
+ cast_environment_->Logging()->RemoveRawEventSubscriber(
+ event_subscriber_.get());
+ }
}
base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
scoped_refptr<CastEnvironment> cast_environment_;
- EncodingEventSubscriber event_subscriber_;
+ scoped_ptr<EncodingEventSubscriber> event_subscriber_;
};
+TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) {
+ Init(GetConfig(VIDEO_EVENT));
+
+ base::TimeTicks now(testing_clock_->NowTicks());
+
+ // Entry with RTP timestamp 0 should get dropped.
+ for (int i = 0; i < 11; i++) {
+ cast_environment_->Logging()->InsertFrameEvent(now,
+ kVideoFrameCaptured,
+ i * 100,
+ /*frame_id*/ 0);
+ cast_environment_->Logging()->InsertFrameEvent(now,
+ kVideoFrameDecoded,
+ i * 100,
+ /*frame_id*/ 0);
+ }
+
+ FrameEventMap frame_events;
+ event_subscriber_->GetFrameEventsAndReset(&frame_events);
+
+ ASSERT_EQ(10u, frame_events.size());
+ EXPECT_EQ(100u, frame_events.begin()->first);
+ EXPECT_EQ(1000u, frame_events.rbegin()->first);
+}
+
+TEST_F(EncodingEventSubscriberTest, PacketEventTruncating) {
+ Init(GetConfig(AUDIO_EVENT));
+
+ base::TimeTicks now(testing_clock_->NowTicks());
+
+ // Entry with RTP timestamp 0 should get dropped.
+ for (int i = 0; i < 11; i++) {
+ cast_environment_->Logging()->InsertPacketEvent(now,
+ kAudioPacketReceived,
+ /*rtp_timestamp*/ i * 100,
+ /*frame_id*/ 0,
+ /*packet_id*/ i,
+ /*max_packet_id*/ 10,
+ /*size*/ 123);
+ }
+
+ PacketEventMap packet_events;
+ event_subscriber_->GetPacketEventsAndReset(&packet_events);
+
+ ASSERT_EQ(10u, packet_events.size());
+ EXPECT_EQ(100u, packet_events.begin()->first);
+ EXPECT_EQ(1000u, packet_events.rbegin()->first);
+}
+
+TEST_F(EncodingEventSubscriberTest, GenericEventMaxLimit) {
+ Init(GetConfig(OTHER_EVENT));
+
+ base::TimeTicks now(testing_clock_->NowTicks());
+ for (int i = 0; i < 11; i++)
+ cast_environment_->Logging()->InsertGenericEvent(now, kJitterMs, 10 * i);
+
+ GenericEventMap generic_events;
+ event_subscriber_->GetGenericEventsAndReset(&generic_events);
+
+ GenericEventMap::iterator it = generic_events.find(kJitterMs);
+ ASSERT_NE(generic_events.end(), it);
+ ASSERT_EQ(10, it->second->value_size());
+ // The first value that was logged (0) should be gone.
+ for (int i = 0; i < 10; i++)
+ EXPECT_NE(0, it->second->value(i));
+}
+
+TEST_F(EncodingEventSubscriberTest, EventFiltering) {
+ Init(GetConfig(VIDEO_EVENT));
+
+ base::TimeTicks now(testing_clock_->NowTicks());
+ RtpTimestamp rtp_timestamp = 100;
+ cast_environment_->Logging()->InsertFrameEvent(now,
+ kVideoFrameDecoded,
+ rtp_timestamp,
+ /*frame_id*/ 0);
+
+ // This is an AUDIO_EVENT and shouldn't be processed by the subscriber.
+ cast_environment_->Logging()->InsertFrameEvent(now,
+ kAudioFrameDecoded,
+ rtp_timestamp,
+ /*frame_id*/ 0);
+
+ // This is an OTHER_EVENT and shouldn't be processed by the subscriber.
+ cast_environment_->Logging()->InsertGenericEvent(now, kRttMs, 100);
+
+ FrameEventMap frame_events;
+ event_subscriber_->GetFrameEventsAndReset(&frame_events);
+
+ FrameEventMap::iterator frame_it = frame_events.find(rtp_timestamp);
+ ASSERT_TRUE(frame_it != frame_events.end());
+
+ linked_ptr<AggregatedFrameEvent> frame_event = frame_it->second;
+
+ ASSERT_EQ(1, frame_event->event_type_size());
+ EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED,
+ frame_event->event_type(0));
+
+ PacketEventMap packet_events;
+ event_subscriber_->GetPacketEventsAndReset(&packet_events);
+ EXPECT_TRUE(packet_events.empty());
+
+ GenericEventMap generic_events;
+ event_subscriber_->GetGenericEventsAndReset(&generic_events);
+
+ EXPECT_TRUE(generic_events.empty());
+}
+
TEST_F(EncodingEventSubscriberTest, FrameEvent) {
+ Init(GetConfig(VIDEO_EVENT));
base::TimeTicks now(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameDecoded,
@@ -50,7 +183,7 @@ TEST_F(EncodingEventSubscriberTest, FrameEvent) {
/*frame_id*/ 0);
FrameEventMap frame_events;
- event_subscriber_.GetFrameEventsAndReset(&frame_events);
+ event_subscriber_->GetFrameEventsAndReset(&frame_events);
ASSERT_EQ(1u, frame_events.size());
@@ -69,11 +202,12 @@ TEST_F(EncodingEventSubscriberTest, FrameEvent) {
EXPECT_EQ(0, event->encoded_frame_size());
EXPECT_EQ(0, event->delay_millis());
- event_subscriber_.GetFrameEventsAndReset(&frame_events);
+ event_subscriber_->GetFrameEventsAndReset(&frame_events);
EXPECT_TRUE(frame_events.empty());
}
TEST_F(EncodingEventSubscriberTest, FrameEventDelay) {
+ Init(GetConfig(AUDIO_EVENT));
base::TimeTicks now(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int delay_ms = 100;
@@ -82,7 +216,7 @@ TEST_F(EncodingEventSubscriberTest, FrameEventDelay) {
/*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms));
FrameEventMap frame_events;
- event_subscriber_.GetFrameEventsAndReset(&frame_events);
+ event_subscriber_->GetFrameEventsAndReset(&frame_events);
ASSERT_EQ(1u, frame_events.size());
@@ -103,6 +237,7 @@ TEST_F(EncodingEventSubscriberTest, FrameEventDelay) {
}
TEST_F(EncodingEventSubscriberTest, FrameEventSize) {
+ Init(GetConfig(VIDEO_EVENT));
base::TimeTicks now(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int size = 123;
@@ -111,7 +246,7 @@ TEST_F(EncodingEventSubscriberTest, FrameEventSize) {
/*frame_id*/ 0, size);
FrameEventMap frame_events;
- event_subscriber_.GetFrameEventsAndReset(&frame_events);
+ event_subscriber_->GetFrameEventsAndReset(&frame_events);
ASSERT_EQ(1u, frame_events.size());
@@ -132,6 +267,7 @@ TEST_F(EncodingEventSubscriberTest, FrameEventSize) {
}
TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) {
+ Init(GetConfig(AUDIO_EVENT));
RtpTimestamp rtp_timestamp1 = 100;
RtpTimestamp rtp_timestamp2 = 200;
base::TimeTicks now1(testing_clock_->NowTicks());
@@ -151,7 +287,7 @@ TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) {
now3, kAudioFrameDecoded, rtp_timestamp1, /*frame_id*/ 0);
FrameEventMap frame_events;
- event_subscriber_.GetFrameEventsAndReset(&frame_events);
+ event_subscriber_->GetFrameEventsAndReset(&frame_events);
ASSERT_EQ(2u, frame_events.size());
@@ -185,6 +321,7 @@ TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) {
}
TEST_F(EncodingEventSubscriberTest, PacketEvent) {
+ Init(GetConfig(AUDIO_EVENT));
base::TimeTicks now(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int packet_id = 2;
@@ -194,7 +331,7 @@ TEST_F(EncodingEventSubscriberTest, PacketEvent) {
/*max_packet_id*/ 10, size);
PacketEventMap packet_events;
- event_subscriber_.GetPacketEventsAndReset(&packet_events);
+ event_subscriber_->GetPacketEventsAndReset(&packet_events);
ASSERT_EQ(1u, packet_events.size());
@@ -214,11 +351,12 @@ TEST_F(EncodingEventSubscriberTest, PacketEvent) {
ASSERT_EQ(1, base_event.event_timestamp_micros_size());
EXPECT_EQ(now.ToInternalValue(), base_event.event_timestamp_micros(0));
- event_subscriber_.GetPacketEventsAndReset(&packet_events);
+ event_subscriber_->GetPacketEventsAndReset(&packet_events);
EXPECT_TRUE(packet_events.empty());
}
TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) {
+ Init(GetConfig(OTHER_EVENT));
base::TimeTicks now1(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int packet_id = 2;
@@ -234,7 +372,7 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) {
/*max_packet_id*/ 10, size);
PacketEventMap packet_events;
- event_subscriber_.GetPacketEventsAndReset(&packet_events);
+ event_subscriber_->GetPacketEventsAndReset(&packet_events);
ASSERT_EQ(1u, packet_events.size());
@@ -258,6 +396,7 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) {
}
TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) {
+ Init(GetConfig(OTHER_EVENT));
base::TimeTicks now1(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int packet_id_1 = 2;
@@ -274,7 +413,7 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) {
/*max_packet_id*/ 10, size);
PacketEventMap packet_events;
- event_subscriber_.GetPacketEventsAndReset(&packet_events);
+ event_subscriber_->GetPacketEventsAndReset(&packet_events);
ASSERT_EQ(1u, packet_events.size());
@@ -303,6 +442,7 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) {
}
TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) {
+ Init(GetConfig(OTHER_EVENT));
base::TimeTicks now1(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp_1 = 100;
RtpTimestamp rtp_timestamp_2 = 200;
@@ -320,7 +460,7 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) {
/*max_packet_id*/ 10, size);
PacketEventMap packet_events;
- event_subscriber_.GetPacketEventsAndReset(&packet_events);
+ event_subscriber_->GetPacketEventsAndReset(&packet_events);
ASSERT_EQ(2u, packet_events.size());
@@ -357,12 +497,13 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) {
}
TEST_F(EncodingEventSubscriberTest, GenericEvent) {
+ Init(GetConfig(OTHER_EVENT));
base::TimeTicks now(testing_clock_->NowTicks());
int value = 123;
cast_environment_->Logging()->InsertGenericEvent(now, kJitterMs, value);
GenericEventMap generic_events;
- event_subscriber_.GetGenericEventsAndReset(&generic_events);
+ event_subscriber_->GetGenericEventsAndReset(&generic_events);
ASSERT_EQ(1u, generic_events.size());
@@ -377,11 +518,12 @@ TEST_F(EncodingEventSubscriberTest, GenericEvent) {
ASSERT_EQ(1, event->value_size());
EXPECT_EQ(value, event->value(0));
- event_subscriber_.GetGenericEventsAndReset(&generic_events);
+ event_subscriber_->GetGenericEventsAndReset(&generic_events);
EXPECT_TRUE(generic_events.empty());
}
TEST_F(EncodingEventSubscriberTest, MultipleGenericEventsForType) {
+ Init(GetConfig(OTHER_EVENT));
base::TimeTicks now1(testing_clock_->NowTicks());
int value1 = 123;
cast_environment_->Logging()->InsertGenericEvent(now1, kJitterMs, value1);
@@ -392,7 +534,7 @@ TEST_F(EncodingEventSubscriberTest, MultipleGenericEventsForType) {
cast_environment_->Logging()->InsertGenericEvent(now2, kJitterMs, value2);
GenericEventMap generic_events;
- event_subscriber_.GetGenericEventsAndReset(&generic_events);
+ event_subscriber_->GetGenericEventsAndReset(&generic_events);
ASSERT_EQ(1u, generic_events.size());

Powered by Google App Engine
This is Rietveld 408576698