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

Side by Side 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/encoding_event_subscriber.h" 10 #include "media/cast/logging/encoding_event_subscriber.h"
11 #include "media/cast/logging/logging_defines.h" 11 #include "media/cast/logging/logging_defines.h"
12 #include "media/cast/test/fake_single_thread_task_runner.h" 12 #include "media/cast/test/fake_single_thread_task_runner.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 using media::cast::proto::AggregatedFrameEvent; 15 using media::cast::proto::AggregatedFrameEvent;
16 using media::cast::proto::AggregatedGenericEvent;
17 using media::cast::proto::AggregatedPacketEvent; 16 using media::cast::proto::AggregatedPacketEvent;
18 using media::cast::proto::BasePacketEvent; 17 using media::cast::proto::BasePacketEvent;
19 18
20 namespace media { 19 namespace media {
21 namespace cast { 20 namespace cast {
22 21
23 class EncodingEventSubscriberTest : public ::testing::Test { 22 class EncodingEventSubscriberTest : public ::testing::Test {
24 protected: 23 protected:
25 EncodingEventSubscriberTest() 24 EncodingEventSubscriberTest()
26 : testing_clock_(new base::SimpleTestTickClock()), 25 : testing_clock_(new base::SimpleTestTickClock()),
27 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), 26 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)),
28 cast_environment_(new CastEnvironment( 27 cast_environment_(new CastEnvironment(
29 scoped_ptr<base::TickClock>(testing_clock_).Pass(), task_runner_, 28 scoped_ptr<base::TickClock>(testing_clock_).Pass(),
30 task_runner_, task_runner_, task_runner_, task_runner_, 29 task_runner_,
31 task_runner_, GetLoggingConfigWithRawEventsAndStatsEnabled())) { 30 task_runner_,
32 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber_); 31 task_runner_,
32 task_runner_,
33 task_runner_,
34 task_runner_,
35 GetLoggingConfigWithRawEventsAndStatsEnabled())) {}
36
37 void Init(EventMediaType event_media_type) {
38 DCHECK(!event_subscriber_);
39 event_subscriber_.reset(new EncodingEventSubscriber(event_media_type, 10));
40 cast_environment_->Logging()->AddRawEventSubscriber(
41 event_subscriber_.get());
33 } 42 }
34 43
35 virtual ~EncodingEventSubscriberTest() { 44 virtual ~EncodingEventSubscriberTest() {
36 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber_); 45 if (event_subscriber_) {
46 cast_environment_->Logging()->RemoveRawEventSubscriber(
47 event_subscriber_.get());
48 }
37 } 49 }
38 50
39 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. 51 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
40 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; 52 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
41 scoped_refptr<CastEnvironment> cast_environment_; 53 scoped_refptr<CastEnvironment> cast_environment_;
42 EncodingEventSubscriber event_subscriber_; 54 scoped_ptr<EncodingEventSubscriber> event_subscriber_;
43 }; 55 };
44 56
57 TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) {
58 Init(VIDEO_EVENT);
59
60 base::TimeTicks now(testing_clock_->NowTicks());
61
62 // Entry with RTP timestamp 0 should get dropped.
63 for (int i = 0; i < 11; i++) {
64 cast_environment_->Logging()->InsertFrameEvent(now,
65 kVideoFrameCaptured,
66 i * 100,
67 /*frame_id*/ 0);
68 cast_environment_->Logging()->InsertFrameEvent(now,
69 kVideoFrameDecoded,
70 i * 100,
71 /*frame_id*/ 0);
72 }
73
74 FrameEventMap frame_events;
75 event_subscriber_->GetFrameEventsAndReset(&frame_events);
76
77 ASSERT_EQ(10u, frame_events.size());
78 EXPECT_EQ(100u, frame_events.begin()->first);
79 EXPECT_EQ(1000u, frame_events.rbegin()->first);
80 }
81
82 TEST_F(EncodingEventSubscriberTest, PacketEventTruncating) {
83 Init(AUDIO_EVENT);
84
85 base::TimeTicks now(testing_clock_->NowTicks());
86
87 // Entry with RTP timestamp 0 should get dropped.
88 for (int i = 0; i < 11; i++) {
89 cast_environment_->Logging()->InsertPacketEvent(now,
90 kAudioPacketReceived,
91 /*rtp_timestamp*/ i * 100,
92 /*frame_id*/ 0,
93 /*packet_id*/ i,
94 /*max_packet_id*/ 10,
95 /*size*/ 123);
96 }
97
98 PacketEventMap packet_events;
99 event_subscriber_->GetPacketEventsAndReset(&packet_events);
100
101 ASSERT_EQ(10u, packet_events.size());
102 EXPECT_EQ(100u, packet_events.begin()->first);
103 EXPECT_EQ(1000u, packet_events.rbegin()->first);
104 }
105
106 TEST_F(EncodingEventSubscriberTest, EventFiltering) {
107 Init(VIDEO_EVENT);
108
109 base::TimeTicks now(testing_clock_->NowTicks());
110 RtpTimestamp rtp_timestamp = 100;
111 cast_environment_->Logging()->InsertFrameEvent(now,
112 kVideoFrameDecoded,
113 rtp_timestamp,
114 /*frame_id*/ 0);
115
116 // This is an AUDIO_EVENT and shouldn't be processed by the subscriber.
117 cast_environment_->Logging()->InsertFrameEvent(now,
118 kAudioFrameDecoded,
119 rtp_timestamp,
120 /*frame_id*/ 0);
121
122 FrameEventMap frame_events;
123 event_subscriber_->GetFrameEventsAndReset(&frame_events);
124
125 FrameEventMap::iterator frame_it = frame_events.find(rtp_timestamp);
126 ASSERT_TRUE(frame_it != frame_events.end());
127
128 linked_ptr<AggregatedFrameEvent> frame_event = frame_it->second;
129
130 ASSERT_EQ(1, frame_event->event_type_size());
131 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED,
132 frame_event->event_type(0));
133
134 PacketEventMap packet_events;
135 event_subscriber_->GetPacketEventsAndReset(&packet_events);
136 EXPECT_TRUE(packet_events.empty());
137 }
138
45 TEST_F(EncodingEventSubscriberTest, FrameEvent) { 139 TEST_F(EncodingEventSubscriberTest, FrameEvent) {
140 Init(VIDEO_EVENT);
46 base::TimeTicks now(testing_clock_->NowTicks()); 141 base::TimeTicks now(testing_clock_->NowTicks());
47 RtpTimestamp rtp_timestamp = 100; 142 RtpTimestamp rtp_timestamp = 100;
48 cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameDecoded, 143 cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameDecoded,
49 rtp_timestamp, 144 rtp_timestamp,
50 /*frame_id*/ 0); 145 /*frame_id*/ 0);
51 146
52 FrameEventMap frame_events; 147 FrameEventMap frame_events;
53 event_subscriber_.GetFrameEventsAndReset(&frame_events); 148 event_subscriber_->GetFrameEventsAndReset(&frame_events);
54 149
55 ASSERT_EQ(1u, frame_events.size()); 150 ASSERT_EQ(1u, frame_events.size());
56 151
57 FrameEventMap::iterator it = frame_events.find(rtp_timestamp); 152 FrameEventMap::iterator it = frame_events.find(rtp_timestamp);
58 ASSERT_TRUE(it != frame_events.end()); 153 ASSERT_TRUE(it != frame_events.end());
59 154
60 linked_ptr<AggregatedFrameEvent> event = it->second; 155 linked_ptr<AggregatedFrameEvent> event = it->second;
61 156
62 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp()); 157 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
63 158
64 ASSERT_EQ(1, event->event_type_size()); 159 ASSERT_EQ(1, event->event_type_size());
65 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, event->event_type(0)); 160 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, event->event_type(0));
66 ASSERT_EQ(1, event->event_timestamp_micros_size()); 161 ASSERT_EQ(1, event->event_timestamp_micros_size());
67 EXPECT_EQ(now.ToInternalValue(), event->event_timestamp_micros(0)); 162 EXPECT_EQ(now.ToInternalValue(), event->event_timestamp_micros(0));
68 163
69 EXPECT_EQ(0, event->encoded_frame_size()); 164 EXPECT_EQ(0, event->encoded_frame_size());
70 EXPECT_EQ(0, event->delay_millis()); 165 EXPECT_EQ(0, event->delay_millis());
71 166
72 event_subscriber_.GetFrameEventsAndReset(&frame_events); 167 event_subscriber_->GetFrameEventsAndReset(&frame_events);
73 EXPECT_TRUE(frame_events.empty()); 168 EXPECT_TRUE(frame_events.empty());
74 } 169 }
75 170
76 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) { 171 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) {
172 Init(AUDIO_EVENT);
77 base::TimeTicks now(testing_clock_->NowTicks()); 173 base::TimeTicks now(testing_clock_->NowTicks());
78 RtpTimestamp rtp_timestamp = 100; 174 RtpTimestamp rtp_timestamp = 100;
79 int delay_ms = 100; 175 int delay_ms = 100;
80 cast_environment_->Logging()->InsertFrameEventWithDelay( 176 cast_environment_->Logging()->InsertFrameEventWithDelay(
81 now, kAudioPlayoutDelay, rtp_timestamp, 177 now, kAudioPlayoutDelay, rtp_timestamp,
82 /*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms)); 178 /*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms));
83 179
84 FrameEventMap frame_events; 180 FrameEventMap frame_events;
85 event_subscriber_.GetFrameEventsAndReset(&frame_events); 181 event_subscriber_->GetFrameEventsAndReset(&frame_events);
86 182
87 ASSERT_EQ(1u, frame_events.size()); 183 ASSERT_EQ(1u, frame_events.size());
88 184
89 FrameEventMap::iterator it = frame_events.find(rtp_timestamp); 185 FrameEventMap::iterator it = frame_events.find(rtp_timestamp);
90 ASSERT_TRUE(it != frame_events.end()); 186 ASSERT_TRUE(it != frame_events.end());
91 187
92 linked_ptr<AggregatedFrameEvent> event = it->second; 188 linked_ptr<AggregatedFrameEvent> event = it->second;
93 189
94 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp()); 190 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
95 191
96 ASSERT_EQ(1, event->event_type_size()); 192 ASSERT_EQ(1, event->event_type_size());
97 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); 193 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0));
98 ASSERT_EQ(1, event->event_timestamp_micros_size()); 194 ASSERT_EQ(1, event->event_timestamp_micros_size());
99 EXPECT_EQ(now.ToInternalValue(), event->event_timestamp_micros(0)); 195 EXPECT_EQ(now.ToInternalValue(), event->event_timestamp_micros(0));
100 196
101 EXPECT_EQ(0, event->encoded_frame_size()); 197 EXPECT_EQ(0, event->encoded_frame_size());
102 EXPECT_EQ(100, event->delay_millis()); 198 EXPECT_EQ(100, event->delay_millis());
103 } 199 }
104 200
105 TEST_F(EncodingEventSubscriberTest, FrameEventSize) { 201 TEST_F(EncodingEventSubscriberTest, FrameEventSize) {
202 Init(VIDEO_EVENT);
106 base::TimeTicks now(testing_clock_->NowTicks()); 203 base::TimeTicks now(testing_clock_->NowTicks());
107 RtpTimestamp rtp_timestamp = 100; 204 RtpTimestamp rtp_timestamp = 100;
108 int size = 123; 205 int size = 123;
109 cast_environment_->Logging()->InsertFrameEventWithSize( 206 cast_environment_->Logging()->InsertFrameEventWithSize(
110 now, kVideoFrameEncoded, rtp_timestamp, 207 now, kVideoFrameEncoded, rtp_timestamp,
111 /*frame_id*/ 0, size); 208 /*frame_id*/ 0, size);
112 209
113 FrameEventMap frame_events; 210 FrameEventMap frame_events;
114 event_subscriber_.GetFrameEventsAndReset(&frame_events); 211 event_subscriber_->GetFrameEventsAndReset(&frame_events);
115 212
116 ASSERT_EQ(1u, frame_events.size()); 213 ASSERT_EQ(1u, frame_events.size());
117 214
118 FrameEventMap::iterator it = frame_events.find(rtp_timestamp); 215 FrameEventMap::iterator it = frame_events.find(rtp_timestamp);
119 ASSERT_TRUE(it != frame_events.end()); 216 ASSERT_TRUE(it != frame_events.end());
120 217
121 linked_ptr<AggregatedFrameEvent> event = it->second; 218 linked_ptr<AggregatedFrameEvent> event = it->second;
122 219
123 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp()); 220 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
124 221
125 ASSERT_EQ(1, event->event_type_size()); 222 ASSERT_EQ(1, event->event_type_size());
126 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_ENCODED, event->event_type(0)); 223 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_ENCODED, event->event_type(0));
127 ASSERT_EQ(1, event->event_timestamp_micros_size()); 224 ASSERT_EQ(1, event->event_timestamp_micros_size());
128 EXPECT_EQ(now.ToInternalValue(), event->event_timestamp_micros(0)); 225 EXPECT_EQ(now.ToInternalValue(), event->event_timestamp_micros(0));
129 226
130 EXPECT_EQ(size, event->encoded_frame_size()); 227 EXPECT_EQ(size, event->encoded_frame_size());
131 EXPECT_EQ(0, event->delay_millis()); 228 EXPECT_EQ(0, event->delay_millis());
132 } 229 }
133 230
134 TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) { 231 TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) {
232 Init(AUDIO_EVENT);
135 RtpTimestamp rtp_timestamp1 = 100; 233 RtpTimestamp rtp_timestamp1 = 100;
136 RtpTimestamp rtp_timestamp2 = 200; 234 RtpTimestamp rtp_timestamp2 = 200;
137 base::TimeTicks now1(testing_clock_->NowTicks()); 235 base::TimeTicks now1(testing_clock_->NowTicks());
138 cast_environment_->Logging()->InsertFrameEventWithDelay( 236 cast_environment_->Logging()->InsertFrameEventWithDelay(
139 now1, kAudioPlayoutDelay, rtp_timestamp1, 237 now1, kAudioPlayoutDelay, rtp_timestamp1,
140 /*frame_id*/ 0, /*delay*/ base::TimeDelta::FromMilliseconds(100)); 238 /*frame_id*/ 0, /*delay*/ base::TimeDelta::FromMilliseconds(100));
141 239
142 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); 240 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20));
143 base::TimeTicks now2(testing_clock_->NowTicks()); 241 base::TimeTicks now2(testing_clock_->NowTicks());
144 cast_environment_->Logging()->InsertFrameEventWithSize( 242 cast_environment_->Logging()->InsertFrameEventWithSize(
145 now2, kAudioFrameEncoded, rtp_timestamp2, 243 now2, kAudioFrameEncoded, rtp_timestamp2,
146 /*frame_id*/ 0, /*size*/ 123); 244 /*frame_id*/ 0, /*size*/ 123);
147 245
148 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); 246 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20));
149 base::TimeTicks now3(testing_clock_->NowTicks()); 247 base::TimeTicks now3(testing_clock_->NowTicks());
150 cast_environment_->Logging()->InsertFrameEvent( 248 cast_environment_->Logging()->InsertFrameEvent(
151 now3, kAudioFrameDecoded, rtp_timestamp1, /*frame_id*/ 0); 249 now3, kAudioFrameDecoded, rtp_timestamp1, /*frame_id*/ 0);
152 250
153 FrameEventMap frame_events; 251 FrameEventMap frame_events;
154 event_subscriber_.GetFrameEventsAndReset(&frame_events); 252 event_subscriber_->GetFrameEventsAndReset(&frame_events);
155 253
156 ASSERT_EQ(2u, frame_events.size()); 254 ASSERT_EQ(2u, frame_events.size());
157 255
158 FrameEventMap::iterator it = frame_events.find(100); 256 FrameEventMap::iterator it = frame_events.find(100);
159 ASSERT_TRUE(it != frame_events.end()); 257 ASSERT_TRUE(it != frame_events.end());
160 258
161 linked_ptr<AggregatedFrameEvent> event = it->second; 259 linked_ptr<AggregatedFrameEvent> event = it->second;
162 260
163 EXPECT_EQ(rtp_timestamp1, event->rtp_timestamp()); 261 EXPECT_EQ(rtp_timestamp1, event->rtp_timestamp());
164 262
(...skipping 13 matching lines...) Expand all
178 EXPECT_EQ(rtp_timestamp2, event->rtp_timestamp()); 276 EXPECT_EQ(rtp_timestamp2, event->rtp_timestamp());
179 277
180 ASSERT_EQ(1, event->event_type_size()); 278 ASSERT_EQ(1, event->event_type_size());
181 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_ENCODED, event->event_type(0)); 279 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_ENCODED, event->event_type(0));
182 280
183 ASSERT_EQ(1, event->event_timestamp_micros_size()); 281 ASSERT_EQ(1, event->event_timestamp_micros_size());
184 EXPECT_EQ(now2.ToInternalValue(), event->event_timestamp_micros(0)); 282 EXPECT_EQ(now2.ToInternalValue(), event->event_timestamp_micros(0));
185 } 283 }
186 284
187 TEST_F(EncodingEventSubscriberTest, PacketEvent) { 285 TEST_F(EncodingEventSubscriberTest, PacketEvent) {
286 Init(AUDIO_EVENT);
188 base::TimeTicks now(testing_clock_->NowTicks()); 287 base::TimeTicks now(testing_clock_->NowTicks());
189 RtpTimestamp rtp_timestamp = 100; 288 RtpTimestamp rtp_timestamp = 100;
190 int packet_id = 2; 289 int packet_id = 2;
191 int size = 100; 290 int size = 100;
192 cast_environment_->Logging()->InsertPacketEvent( 291 cast_environment_->Logging()->InsertPacketEvent(
193 now, kAudioPacketReceived, rtp_timestamp, /*frame_id*/ 0, packet_id, 292 now, kAudioPacketReceived, rtp_timestamp, /*frame_id*/ 0, packet_id,
194 /*max_packet_id*/ 10, size); 293 /*max_packet_id*/ 10, size);
195 294
196 PacketEventMap packet_events; 295 PacketEventMap packet_events;
197 event_subscriber_.GetPacketEventsAndReset(&packet_events); 296 event_subscriber_->GetPacketEventsAndReset(&packet_events);
198 297
199 ASSERT_EQ(1u, packet_events.size()); 298 ASSERT_EQ(1u, packet_events.size());
200 299
201 PacketEventMap::iterator it = packet_events.find(rtp_timestamp); 300 PacketEventMap::iterator it = packet_events.find(rtp_timestamp);
202 ASSERT_TRUE(it != packet_events.end()); 301 ASSERT_TRUE(it != packet_events.end());
203 302
204 linked_ptr<AggregatedPacketEvent> event = it->second; 303 linked_ptr<AggregatedPacketEvent> event = it->second;
205 304
206 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp()); 305 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
207 306
208 ASSERT_EQ(1, event->base_packet_event_size()); 307 ASSERT_EQ(1, event->base_packet_event_size());
209 const BasePacketEvent& base_event = event->base_packet_event(0); 308 const BasePacketEvent& base_event = event->base_packet_event(0);
210 EXPECT_EQ(packet_id, base_event.packet_id()); 309 EXPECT_EQ(packet_id, base_event.packet_id());
211 ASSERT_EQ(1, base_event.event_type_size()); 310 ASSERT_EQ(1, base_event.event_type_size());
212 EXPECT_EQ(media::cast::proto::AUDIO_PACKET_RECEIVED, 311 EXPECT_EQ(media::cast::proto::AUDIO_PACKET_RECEIVED,
213 base_event.event_type(0)); 312 base_event.event_type(0));
214 ASSERT_EQ(1, base_event.event_timestamp_micros_size()); 313 ASSERT_EQ(1, base_event.event_timestamp_micros_size());
215 EXPECT_EQ(now.ToInternalValue(), base_event.event_timestamp_micros(0)); 314 EXPECT_EQ(now.ToInternalValue(), base_event.event_timestamp_micros(0));
216 315
217 event_subscriber_.GetPacketEventsAndReset(&packet_events); 316 event_subscriber_->GetPacketEventsAndReset(&packet_events);
218 EXPECT_TRUE(packet_events.empty()); 317 EXPECT_TRUE(packet_events.empty());
219 } 318 }
220 319
221 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) { 320 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) {
321 Init(OTHER_EVENT);
222 base::TimeTicks now1(testing_clock_->NowTicks()); 322 base::TimeTicks now1(testing_clock_->NowTicks());
223 RtpTimestamp rtp_timestamp = 100; 323 RtpTimestamp rtp_timestamp = 100;
224 int packet_id = 2; 324 int packet_id = 2;
225 int size = 100; 325 int size = 100;
226 cast_environment_->Logging()->InsertPacketEvent( 326 cast_environment_->Logging()->InsertPacketEvent(
227 now1, kPacketSentToPacer, rtp_timestamp, /*frame_id*/ 0, packet_id, 327 now1, kPacketSentToPacer, rtp_timestamp, /*frame_id*/ 0, packet_id,
228 /*max_packet_id*/ 10, size); 328 /*max_packet_id*/ 10, size);
229 329
230 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); 330 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20));
231 base::TimeTicks now2(testing_clock_->NowTicks()); 331 base::TimeTicks now2(testing_clock_->NowTicks());
232 cast_environment_->Logging()->InsertPacketEvent( 332 cast_environment_->Logging()->InsertPacketEvent(
233 now2, kPacketSentToNetwork, rtp_timestamp, /*frame_id*/ 0, packet_id, 333 now2, kPacketSentToNetwork, rtp_timestamp, /*frame_id*/ 0, packet_id,
234 /*max_packet_id*/ 10, size); 334 /*max_packet_id*/ 10, size);
235 335
236 PacketEventMap packet_events; 336 PacketEventMap packet_events;
237 event_subscriber_.GetPacketEventsAndReset(&packet_events); 337 event_subscriber_->GetPacketEventsAndReset(&packet_events);
238 338
239 ASSERT_EQ(1u, packet_events.size()); 339 ASSERT_EQ(1u, packet_events.size());
240 340
241 PacketEventMap::iterator it = packet_events.find(rtp_timestamp); 341 PacketEventMap::iterator it = packet_events.find(rtp_timestamp);
242 ASSERT_TRUE(it != packet_events.end()); 342 ASSERT_TRUE(it != packet_events.end());
243 343
244 linked_ptr<AggregatedPacketEvent> event = it->second; 344 linked_ptr<AggregatedPacketEvent> event = it->second;
245 345
246 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp()); 346 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
247 347
248 ASSERT_EQ(1, event->base_packet_event_size()); 348 ASSERT_EQ(1, event->base_packet_event_size());
249 const BasePacketEvent& base_event = event->base_packet_event(0); 349 const BasePacketEvent& base_event = event->base_packet_event(0);
250 EXPECT_EQ(packet_id, base_event.packet_id()); 350 EXPECT_EQ(packet_id, base_event.packet_id());
251 ASSERT_EQ(2, base_event.event_type_size()); 351 ASSERT_EQ(2, base_event.event_type_size());
252 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_PACER, base_event.event_type(0)); 352 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_PACER, base_event.event_type(0));
253 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, 353 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK,
254 base_event.event_type(1)); 354 base_event.event_type(1));
255 ASSERT_EQ(2, base_event.event_timestamp_micros_size()); 355 ASSERT_EQ(2, base_event.event_timestamp_micros_size());
256 EXPECT_EQ(now1.ToInternalValue(), base_event.event_timestamp_micros(0)); 356 EXPECT_EQ(now1.ToInternalValue(), base_event.event_timestamp_micros(0));
257 EXPECT_EQ(now2.ToInternalValue(), base_event.event_timestamp_micros(1)); 357 EXPECT_EQ(now2.ToInternalValue(), base_event.event_timestamp_micros(1));
258 } 358 }
259 359
260 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) { 360 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) {
361 Init(OTHER_EVENT);
261 base::TimeTicks now1(testing_clock_->NowTicks()); 362 base::TimeTicks now1(testing_clock_->NowTicks());
262 RtpTimestamp rtp_timestamp = 100; 363 RtpTimestamp rtp_timestamp = 100;
263 int packet_id_1 = 2; 364 int packet_id_1 = 2;
264 int packet_id_2 = 3; 365 int packet_id_2 = 3;
265 int size = 100; 366 int size = 100;
266 cast_environment_->Logging()->InsertPacketEvent( 367 cast_environment_->Logging()->InsertPacketEvent(
267 now1, kPacketSentToPacer, rtp_timestamp, /*frame_id*/ 0, packet_id_1, 368 now1, kPacketSentToPacer, rtp_timestamp, /*frame_id*/ 0, packet_id_1,
268 /*max_packet_id*/ 10, size); 369 /*max_packet_id*/ 10, size);
269 370
270 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); 371 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20));
271 base::TimeTicks now2(testing_clock_->NowTicks()); 372 base::TimeTicks now2(testing_clock_->NowTicks());
272 cast_environment_->Logging()->InsertPacketEvent( 373 cast_environment_->Logging()->InsertPacketEvent(
273 now2, kPacketRetransmitted, rtp_timestamp, /*frame_id*/ 0, packet_id_2, 374 now2, kPacketRetransmitted, rtp_timestamp, /*frame_id*/ 0, packet_id_2,
274 /*max_packet_id*/ 10, size); 375 /*max_packet_id*/ 10, size);
275 376
276 PacketEventMap packet_events; 377 PacketEventMap packet_events;
277 event_subscriber_.GetPacketEventsAndReset(&packet_events); 378 event_subscriber_->GetPacketEventsAndReset(&packet_events);
278 379
279 ASSERT_EQ(1u, packet_events.size()); 380 ASSERT_EQ(1u, packet_events.size());
280 381
281 PacketEventMap::iterator it = packet_events.find(rtp_timestamp); 382 PacketEventMap::iterator it = packet_events.find(rtp_timestamp);
282 ASSERT_TRUE(it != packet_events.end()); 383 ASSERT_TRUE(it != packet_events.end());
283 384
284 linked_ptr<AggregatedPacketEvent> event = it->second; 385 linked_ptr<AggregatedPacketEvent> event = it->second;
285 386
286 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp()); 387 EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
287 388
288 ASSERT_EQ(2, event->base_packet_event_size()); 389 ASSERT_EQ(2, event->base_packet_event_size());
289 const BasePacketEvent& base_event = event->base_packet_event(0); 390 const BasePacketEvent& base_event = event->base_packet_event(0);
290 EXPECT_EQ(packet_id_1, base_event.packet_id()); 391 EXPECT_EQ(packet_id_1, base_event.packet_id());
291 ASSERT_EQ(1, base_event.event_type_size()); 392 ASSERT_EQ(1, base_event.event_type_size());
292 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_PACER, base_event.event_type(0)); 393 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_PACER, base_event.event_type(0));
293 ASSERT_EQ(1, base_event.event_timestamp_micros_size()); 394 ASSERT_EQ(1, base_event.event_timestamp_micros_size());
294 EXPECT_EQ(now1.ToInternalValue(), base_event.event_timestamp_micros(0)); 395 EXPECT_EQ(now1.ToInternalValue(), base_event.event_timestamp_micros(0));
295 396
296 const BasePacketEvent& base_event_2 = event->base_packet_event(1); 397 const BasePacketEvent& base_event_2 = event->base_packet_event(1);
297 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); 398 EXPECT_EQ(packet_id_2, base_event_2.packet_id());
298 ASSERT_EQ(1, base_event_2.event_type_size()); 399 ASSERT_EQ(1, base_event_2.event_type_size());
299 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, 400 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED,
300 base_event_2.event_type(0)); 401 base_event_2.event_type(0));
301 ASSERT_EQ(1, base_event_2.event_timestamp_micros_size()); 402 ASSERT_EQ(1, base_event_2.event_timestamp_micros_size());
302 EXPECT_EQ(now2.ToInternalValue(), base_event_2.event_timestamp_micros(0)); 403 EXPECT_EQ(now2.ToInternalValue(), base_event_2.event_timestamp_micros(0));
303 } 404 }
304 405
305 TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) { 406 TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) {
407 Init(OTHER_EVENT);
306 base::TimeTicks now1(testing_clock_->NowTicks()); 408 base::TimeTicks now1(testing_clock_->NowTicks());
307 RtpTimestamp rtp_timestamp_1 = 100; 409 RtpTimestamp rtp_timestamp_1 = 100;
308 RtpTimestamp rtp_timestamp_2 = 200; 410 RtpTimestamp rtp_timestamp_2 = 200;
309 int packet_id_1 = 2; 411 int packet_id_1 = 2;
310 int packet_id_2 = 3; 412 int packet_id_2 = 3;
311 int size = 100; 413 int size = 100;
312 cast_environment_->Logging()->InsertPacketEvent( 414 cast_environment_->Logging()->InsertPacketEvent(
313 now1, kPacketSentToPacer, rtp_timestamp_1, /*frame_id*/ 0, packet_id_1, 415 now1, kPacketSentToPacer, rtp_timestamp_1, /*frame_id*/ 0, packet_id_1,
314 /*max_packet_id*/ 10, size); 416 /*max_packet_id*/ 10, size);
315 417
316 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); 418 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20));
317 base::TimeTicks now2(testing_clock_->NowTicks()); 419 base::TimeTicks now2(testing_clock_->NowTicks());
318 cast_environment_->Logging()->InsertPacketEvent( 420 cast_environment_->Logging()->InsertPacketEvent(
319 now2, kPacketRetransmitted, rtp_timestamp_2, /*frame_id*/ 0, packet_id_2, 421 now2, kPacketRetransmitted, rtp_timestamp_2, /*frame_id*/ 0, packet_id_2,
320 /*max_packet_id*/ 10, size); 422 /*max_packet_id*/ 10, size);
321 423
322 PacketEventMap packet_events; 424 PacketEventMap packet_events;
323 event_subscriber_.GetPacketEventsAndReset(&packet_events); 425 event_subscriber_->GetPacketEventsAndReset(&packet_events);
324 426
325 ASSERT_EQ(2u, packet_events.size()); 427 ASSERT_EQ(2u, packet_events.size());
326 428
327 PacketEventMap::iterator it = packet_events.find(rtp_timestamp_1); 429 PacketEventMap::iterator it = packet_events.find(rtp_timestamp_1);
328 ASSERT_TRUE(it != packet_events.end()); 430 ASSERT_TRUE(it != packet_events.end());
329 431
330 linked_ptr<AggregatedPacketEvent> event = it->second; 432 linked_ptr<AggregatedPacketEvent> event = it->second;
331 433
332 EXPECT_EQ(rtp_timestamp_1, event->rtp_timestamp()); 434 EXPECT_EQ(rtp_timestamp_1, event->rtp_timestamp());
333 435
(...skipping 15 matching lines...) Expand all
349 ASSERT_EQ(1, event->base_packet_event_size()); 451 ASSERT_EQ(1, event->base_packet_event_size());
350 const BasePacketEvent& base_event_2 = event->base_packet_event(0); 452 const BasePacketEvent& base_event_2 = event->base_packet_event(0);
351 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); 453 EXPECT_EQ(packet_id_2, base_event_2.packet_id());
352 ASSERT_EQ(1, base_event_2.event_type_size()); 454 ASSERT_EQ(1, base_event_2.event_type_size());
353 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, 455 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED,
354 base_event_2.event_type(0)); 456 base_event_2.event_type(0));
355 ASSERT_EQ(1, base_event_2.event_timestamp_micros_size()); 457 ASSERT_EQ(1, base_event_2.event_timestamp_micros_size());
356 EXPECT_EQ(now2.ToInternalValue(), base_event_2.event_timestamp_micros(0)); 458 EXPECT_EQ(now2.ToInternalValue(), base_event_2.event_timestamp_micros(0));
357 } 459 }
358 460
359 TEST_F(EncodingEventSubscriberTest, GenericEvent) {
360 base::TimeTicks now(testing_clock_->NowTicks());
361 int value = 123;
362 cast_environment_->Logging()->InsertGenericEvent(now, kJitterMs, value);
363
364 GenericEventMap generic_events;
365 event_subscriber_.GetGenericEventsAndReset(&generic_events);
366
367 ASSERT_EQ(1u, generic_events.size());
368
369 GenericEventMap::iterator it = generic_events.find(kJitterMs);
370 ASSERT_TRUE(it != generic_events.end());
371
372 linked_ptr<AggregatedGenericEvent> event = it->second;
373
374 ASSERT_EQ(media::cast::proto::JITTER_MS, event->event_type());
375 ASSERT_EQ(1, event->event_timestamp_micros_size());
376 EXPECT_EQ(now.ToInternalValue(), event->event_timestamp_micros(0));
377 ASSERT_EQ(1, event->value_size());
378 EXPECT_EQ(value, event->value(0));
379
380 event_subscriber_.GetGenericEventsAndReset(&generic_events);
381 EXPECT_TRUE(generic_events.empty());
382 }
383
384 TEST_F(EncodingEventSubscriberTest, MultipleGenericEventsForType) {
385 base::TimeTicks now1(testing_clock_->NowTicks());
386 int value1 = 123;
387 cast_environment_->Logging()->InsertGenericEvent(now1, kJitterMs, value1);
388
389 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20));
390 base::TimeTicks now2(testing_clock_->NowTicks());
391 int value2 = 456;
392 cast_environment_->Logging()->InsertGenericEvent(now2, kJitterMs, value2);
393
394 GenericEventMap generic_events;
395 event_subscriber_.GetGenericEventsAndReset(&generic_events);
396
397 ASSERT_EQ(1u, generic_events.size());
398
399 GenericEventMap::iterator it = generic_events.find(kJitterMs);
400 ASSERT_TRUE(it != generic_events.end());
401
402 linked_ptr<AggregatedGenericEvent> event = it->second;
403
404 ASSERT_EQ(media::cast::proto::JITTER_MS, event->event_type());
405 ASSERT_EQ(2, event->event_timestamp_micros_size());
406 EXPECT_EQ(now1.ToInternalValue(), event->event_timestamp_micros(0));
407 EXPECT_EQ(now2.ToInternalValue(), event->event_timestamp_micros(1));
408 ASSERT_EQ(2, event->value_size());
409 EXPECT_EQ(value1, event->value(0));
410 EXPECT_EQ(value2, event->value(1));
411 }
412
413 } // namespace cast 461 } // namespace cast
414 } // namespace media 462 } // namespace media
OLDNEW
« 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