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

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: Rebase 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
« no previous file with comments | « media/cast/logging/encoding_event_subscriber.cc ('k') | media/cast/logging/logging_defines.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..1194ed9c749b1158dee62afbb44c4cd53c101ef0 100644
--- a/media/cast/logging/encoding_event_subscriber_unittest.cc
+++ b/media/cast/logging/encoding_event_subscriber_unittest.cc
@@ -13,7 +13,6 @@
#include "testing/gtest/include/gtest/gtest.h"
using media::cast::proto::AggregatedFrameEvent;
-using media::cast::proto::AggregatedGenericEvent;
using media::cast::proto::AggregatedPacketEvent;
using media::cast::proto::BasePacketEvent;
@@ -26,23 +25,119 @@ class EncodingEventSubscriberTest : public ::testing::Test {
: 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(EventMediaType event_media_type) {
+ DCHECK(!event_subscriber_);
+ event_subscriber_.reset(new EncodingEventSubscriber(event_media_type, 10));
+ 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(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(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, EventFiltering) {
+ Init(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);
+
+ 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());
+}
+
TEST_F(EncodingEventSubscriberTest, FrameEvent) {
+ Init(VIDEO_EVENT);
base::TimeTicks now(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameDecoded,
@@ -50,7 +145,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 +164,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(AUDIO_EVENT);
base::TimeTicks now(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int delay_ms = 100;
@@ -82,7 +178,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 +199,7 @@ TEST_F(EncodingEventSubscriberTest, FrameEventDelay) {
}
TEST_F(EncodingEventSubscriberTest, FrameEventSize) {
+ Init(VIDEO_EVENT);
base::TimeTicks now(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int size = 123;
@@ -111,7 +208,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 +229,7 @@ TEST_F(EncodingEventSubscriberTest, FrameEventSize) {
}
TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) {
+ Init(AUDIO_EVENT);
RtpTimestamp rtp_timestamp1 = 100;
RtpTimestamp rtp_timestamp2 = 200;
base::TimeTicks now1(testing_clock_->NowTicks());
@@ -151,7 +249,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 +283,7 @@ TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) {
}
TEST_F(EncodingEventSubscriberTest, PacketEvent) {
+ Init(AUDIO_EVENT);
base::TimeTicks now(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int packet_id = 2;
@@ -194,7 +293,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 +313,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(OTHER_EVENT);
base::TimeTicks now1(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int packet_id = 2;
@@ -234,7 +334,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 +358,7 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) {
}
TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) {
+ Init(OTHER_EVENT);
base::TimeTicks now1(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp = 100;
int packet_id_1 = 2;
@@ -274,7 +375,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 +404,7 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) {
}
TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) {
+ Init(OTHER_EVENT);
base::TimeTicks now1(testing_clock_->NowTicks());
RtpTimestamp rtp_timestamp_1 = 100;
RtpTimestamp rtp_timestamp_2 = 200;
@@ -320,7 +422,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());
@@ -356,59 +458,5 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) {
EXPECT_EQ(now2.ToInternalValue(), base_event_2.event_timestamp_micros(0));
}
-TEST_F(EncodingEventSubscriberTest, GenericEvent) {
- base::TimeTicks now(testing_clock_->NowTicks());
- int value = 123;
- cast_environment_->Logging()->InsertGenericEvent(now, kJitterMs, value);
-
- GenericEventMap generic_events;
- event_subscriber_.GetGenericEventsAndReset(&generic_events);
-
- ASSERT_EQ(1u, generic_events.size());
-
- GenericEventMap::iterator it = generic_events.find(kJitterMs);
- ASSERT_TRUE(it != generic_events.end());
-
- linked_ptr<AggregatedGenericEvent> event = it->second;
-
- ASSERT_EQ(media::cast::proto::JITTER_MS, event->event_type());
- ASSERT_EQ(1, event->event_timestamp_micros_size());
- EXPECT_EQ(now.ToInternalValue(), event->event_timestamp_micros(0));
- ASSERT_EQ(1, event->value_size());
- EXPECT_EQ(value, event->value(0));
-
- event_subscriber_.GetGenericEventsAndReset(&generic_events);
- EXPECT_TRUE(generic_events.empty());
-}
-
-TEST_F(EncodingEventSubscriberTest, MultipleGenericEventsForType) {
- base::TimeTicks now1(testing_clock_->NowTicks());
- int value1 = 123;
- cast_environment_->Logging()->InsertGenericEvent(now1, kJitterMs, value1);
-
- testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20));
- base::TimeTicks now2(testing_clock_->NowTicks());
- int value2 = 456;
- cast_environment_->Logging()->InsertGenericEvent(now2, kJitterMs, value2);
-
- GenericEventMap generic_events;
- event_subscriber_.GetGenericEventsAndReset(&generic_events);
-
- ASSERT_EQ(1u, generic_events.size());
-
- GenericEventMap::iterator it = generic_events.find(kJitterMs);
- ASSERT_TRUE(it != generic_events.end());
-
- linked_ptr<AggregatedGenericEvent> event = it->second;
-
- ASSERT_EQ(media::cast::proto::JITTER_MS, event->event_type());
- ASSERT_EQ(2, event->event_timestamp_micros_size());
- EXPECT_EQ(now1.ToInternalValue(), event->event_timestamp_micros(0));
- EXPECT_EQ(now2.ToInternalValue(), event->event_timestamp_micros(1));
- ASSERT_EQ(2, event->value_size());
- EXPECT_EQ(value1, event->value(0));
- EXPECT_EQ(value2, event->value(1));
-}
-
} // namespace cast
} // namespace media
« no previous file with comments | « media/cast/logging/encoding_event_subscriber.cc ('k') | media/cast/logging/logging_defines.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698