| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/memory/ref_counted.h" | 5 #include "base/memory/ref_counted.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/test/simple_test_tick_clock.h" | 7 #include "base/test/simple_test_tick_clock.h" |
| 8 #include "base/time/tick_clock.h" | 8 #include "base/time/tick_clock.h" |
| 9 #include "media/cast/cast_environment.h" | 9 #include "media/cast/cast_environment.h" |
| 10 #include "media/cast/logging/logging_defines.h" | 10 #include "media/cast/logging/logging_defines.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 | 35 |
| 36 virtual ~ReceiverRtcpEventSubscriberTest() {} | 36 virtual ~ReceiverRtcpEventSubscriberTest() {} |
| 37 | 37 |
| 38 virtual void TearDown() OVERRIDE { | 38 virtual void TearDown() OVERRIDE { |
| 39 if (event_subscriber_) { | 39 if (event_subscriber_) { |
| 40 cast_environment_->Logging()->RemoveRawEventSubscriber( | 40 cast_environment_->Logging()->RemoveRawEventSubscriber( |
| 41 event_subscriber_.get()); | 41 event_subscriber_.get()); |
| 42 } | 42 } |
| 43 } | 43 } |
| 44 | 44 |
| 45 void Init(ReceiverRtcpEventSubscriber::Type type) { | 45 void Init(EventMediaType type) { |
| 46 event_subscriber_.reset( | 46 event_subscriber_.reset( |
| 47 new ReceiverRtcpEventSubscriber(kMaxEventEntries, type)); | 47 new ReceiverRtcpEventSubscriber(kMaxEventEntries, type)); |
| 48 cast_environment_->Logging()->AddRawEventSubscriber( | 48 cast_environment_->Logging()->AddRawEventSubscriber( |
| 49 event_subscriber_.get()); | 49 event_subscriber_.get()); |
| 50 } | 50 } |
| 51 | 51 |
| 52 void InsertEvents() { | 52 void InsertEvents() { |
| 53 // Video events | 53 // Video events |
| 54 cast_environment_->Logging()->InsertFrameEventWithDelay( | 54 cast_environment_->Logging()->InsertFrameEventWithDelay( |
| 55 testing_clock_->NowTicks(), kVideoRenderDelay, /*rtp_timestamp*/ 100u, | 55 testing_clock_->NowTicks(), FRAME_PLAYOUT, VIDEO_EVENT, |
| 56 /*frame_id*/ 2u, base::TimeDelta::FromMilliseconds(kDelayMs)); | 56 /*rtp_timestamp*/ 100u, /*frame_id*/ 2u, |
| 57 base::TimeDelta::FromMilliseconds(kDelayMs)); |
| 57 cast_environment_->Logging()->InsertFrameEvent( | 58 cast_environment_->Logging()->InsertFrameEvent( |
| 58 testing_clock_->NowTicks(), kVideoFrameDecoded, /*rtp_timestamp*/ 200u, | 59 testing_clock_->NowTicks(), FRAME_DECODED, VIDEO_EVENT, |
| 59 /*frame_id*/ 1u); | 60 /*rtp_timestamp*/ 200u, /*frame_id*/ 1u); |
| 60 cast_environment_->Logging()->InsertPacketEvent( | 61 cast_environment_->Logging()->InsertPacketEvent( |
| 61 testing_clock_->NowTicks(), kVideoPacketReceived, | 62 testing_clock_->NowTicks(), PACKET_RECEIVED, VIDEO_EVENT, |
| 62 /*rtp_timestamp */ 200u, /*frame_id*/ 2u, /*packet_id*/ 1u, | 63 /*rtp_timestamp */ 200u, /*frame_id*/ 2u, /*packet_id*/ 1u, |
| 63 /*max_packet_id*/ 10u, /*size*/ 1024u); | 64 /*max_packet_id*/ 10u, /*size*/ 1024u); |
| 64 | 65 |
| 65 // Audio events | 66 // Audio events |
| 66 cast_environment_->Logging()->InsertFrameEventWithDelay( | 67 cast_environment_->Logging()->InsertFrameEventWithDelay( |
| 67 testing_clock_->NowTicks(), kAudioPlayoutDelay, /*rtp_timestamp*/ 300u, | 68 testing_clock_->NowTicks(), FRAME_PLAYOUT, AUDIO_EVENT, |
| 68 /*frame_id*/ 4u, base::TimeDelta::FromMilliseconds(kDelayMs)); | 69 /*rtp_timestamp*/ 300u, /*frame_id*/ 4u, |
| 70 base::TimeDelta::FromMilliseconds(kDelayMs)); |
| 69 cast_environment_->Logging()->InsertFrameEvent( | 71 cast_environment_->Logging()->InsertFrameEvent( |
| 70 testing_clock_->NowTicks(), kAudioFrameDecoded, /*rtp_timestamp*/ 400u, | 72 testing_clock_->NowTicks(), FRAME_DECODED, AUDIO_EVENT, |
| 71 /*frame_id*/ 3u); | 73 /*rtp_timestamp*/ 400u, /*frame_id*/ 3u); |
| 72 cast_environment_->Logging()->InsertPacketEvent( | 74 cast_environment_->Logging()->InsertPacketEvent( |
| 73 testing_clock_->NowTicks(), kAudioPacketReceived, | 75 testing_clock_->NowTicks(), PACKET_RECEIVED, AUDIO_EVENT, |
| 74 /*rtp_timestamp */ 400u, /*frame_id*/ 5u, /*packet_id*/ 1u, | 76 /*rtp_timestamp */ 400u, /*frame_id*/ 5u, /*packet_id*/ 1u, |
| 75 /*max_packet_id*/ 10u, /*size*/ 128u); | 77 /*max_packet_id*/ 10u, /*size*/ 128u); |
| 76 | 78 |
| 77 // Unrelated events | 79 // Unrelated events |
| 78 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), | 80 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), |
| 79 kVideoFrameCaptureEnd, | 81 FRAME_CAPTURE_END, |
| 82 VIDEO_EVENT, |
| 80 /*rtp_timestamp*/ 100u, | 83 /*rtp_timestamp*/ 100u, |
| 81 /*frame_id*/ 1u); | 84 /*frame_id*/ 1u); |
| 82 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), | 85 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), |
| 83 kAudioFrameCaptureEnd, | 86 FRAME_CAPTURE_END, |
| 87 AUDIO_EVENT, |
| 84 /*rtp_timestamp*/ 100u, | 88 /*rtp_timestamp*/ 100u, |
| 85 /*frame_id*/ 1u); | 89 /*frame_id*/ 1u); |
| 86 } | 90 } |
| 87 | 91 |
| 88 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 92 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
| 89 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 93 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
| 90 scoped_refptr<CastEnvironment> cast_environment_; | 94 scoped_refptr<CastEnvironment> cast_environment_; |
| 91 scoped_ptr<ReceiverRtcpEventSubscriber> event_subscriber_; | 95 scoped_ptr<ReceiverRtcpEventSubscriber> event_subscriber_; |
| 92 }; | 96 }; |
| 93 | 97 |
| 94 TEST_F(ReceiverRtcpEventSubscriberTest, LogVideoEvents) { | 98 TEST_F(ReceiverRtcpEventSubscriberTest, LogVideoEvents) { |
| 95 Init(ReceiverRtcpEventSubscriber::kVideoEventSubscriber); | 99 Init(VIDEO_EVENT); |
| 96 | 100 |
| 97 InsertEvents(); | 101 InsertEvents(); |
| 98 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 102 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
| 99 event_subscriber_->GetRtcpEventsAndReset(&rtcp_events); | 103 event_subscriber_->GetRtcpEventsAndReset(&rtcp_events); |
| 100 EXPECT_EQ(3u, rtcp_events.size()); | 104 EXPECT_EQ(3u, rtcp_events.size()); |
| 101 } | 105 } |
| 102 | 106 |
| 103 TEST_F(ReceiverRtcpEventSubscriberTest, LogAudioEvents) { | 107 TEST_F(ReceiverRtcpEventSubscriberTest, LogAudioEvents) { |
| 104 Init(ReceiverRtcpEventSubscriber::kAudioEventSubscriber); | 108 Init(AUDIO_EVENT); |
| 105 | 109 |
| 106 InsertEvents(); | 110 InsertEvents(); |
| 107 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 111 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
| 108 event_subscriber_->GetRtcpEventsAndReset(&rtcp_events); | 112 event_subscriber_->GetRtcpEventsAndReset(&rtcp_events); |
| 109 EXPECT_EQ(3u, rtcp_events.size()); | 113 EXPECT_EQ(3u, rtcp_events.size()); |
| 110 } | 114 } |
| 111 | 115 |
| 112 TEST_F(ReceiverRtcpEventSubscriberTest, DropEventsWhenSizeExceeded) { | 116 TEST_F(ReceiverRtcpEventSubscriberTest, DropEventsWhenSizeExceeded) { |
| 113 Init(ReceiverRtcpEventSubscriber::kVideoEventSubscriber); | 117 Init(VIDEO_EVENT); |
| 114 | 118 |
| 115 for (uint32 i = 1u; i <= 10u; ++i) { | 119 for (uint32 i = 1u; i <= 10u; ++i) { |
| 116 cast_environment_->Logging()->InsertFrameEvent( | 120 cast_environment_->Logging()->InsertFrameEvent( |
| 117 testing_clock_->NowTicks(), kVideoFrameDecoded, | 121 testing_clock_->NowTicks(), FRAME_DECODED, VIDEO_EVENT, |
| 118 /*rtp_timestamp*/ i * 10, /*frame_id*/ i); | 122 /*rtp_timestamp*/ i * 10, /*frame_id*/ i); |
| 119 } | 123 } |
| 120 | 124 |
| 121 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 125 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
| 122 event_subscriber_->GetRtcpEventsAndReset(&rtcp_events); | 126 event_subscriber_->GetRtcpEventsAndReset(&rtcp_events); |
| 123 EXPECT_EQ(10u, rtcp_events.size()); | 127 EXPECT_EQ(10u, rtcp_events.size()); |
| 124 } | 128 } |
| 125 | 129 |
| 126 } // namespace cast | 130 } // namespace cast |
| 127 } // namespace media | 131 } // namespace media |
| OLD | NEW |