| 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
|
|
|