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

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

Powered by Google App Engine
This is Rietveld 408576698