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

Side by Side Diff: media/cast/logging/receiver_time_offset_estimator_impl_unittest.cc

Issue 556693002: Cast: Logging estimates clock difference based on packets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 6 years, 3 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/receiver_time_offset_estimator_impl.cc ('k') | media/cast/test/sender.cc » ('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/logging_defines.h" 10 #include "media/cast/logging/logging_defines.h"
11 #include "media/cast/logging/receiver_time_offset_estimator_impl.h" 11 #include "media/cast/logging/receiver_time_offset_estimator_impl.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 namespace media { 15 namespace media {
16 namespace cast { 16 namespace cast {
17 17
18 class ReceiverTimeOffsetEstimatorImplTest : public ::testing::Test { 18 class ReceiverTimeOffsetEstimatorImplTest : public ::testing::Test {
19 protected: 19 protected:
20 ReceiverTimeOffsetEstimatorImplTest() 20 ReceiverTimeOffsetEstimatorImplTest()
21 : sender_clock_(new base::SimpleTestTickClock()), 21 : sender_clock_(new base::SimpleTestTickClock()),
22 task_runner_(new test::FakeSingleThreadTaskRunner(sender_clock_)), 22 task_runner_(new test::FakeSingleThreadTaskRunner(sender_clock_)),
23 cast_environment_(new CastEnvironment( 23 cast_environment_(new CastEnvironment(
24 scoped_ptr<base::TickClock>(sender_clock_).Pass(), 24 scoped_ptr<base::TickClock>(sender_clock_).Pass(),
25 task_runner_, 25 task_runner_,
26 task_runner_, 26 task_runner_,
27 task_runner_)), 27 task_runner_)) {
28 estimator_(cast_environment_->Clock()) {
29 cast_environment_->Logging()->AddRawEventSubscriber(&estimator_); 28 cast_environment_->Logging()->AddRawEventSubscriber(&estimator_);
30 } 29 }
31 30
32 virtual ~ReceiverTimeOffsetEstimatorImplTest() { 31 virtual ~ReceiverTimeOffsetEstimatorImplTest() {
33 cast_environment_->Logging()->RemoveRawEventSubscriber(&estimator_); 32 cast_environment_->Logging()->RemoveRawEventSubscriber(&estimator_);
34 } 33 }
35 34
36 void AdvanceClocks(base::TimeDelta time) { 35 void AdvanceClocks(base::TimeDelta time) {
37 sender_clock_->Advance(time); 36 sender_clock_->Advance(time);
38 receiver_clock_.Advance(time); 37 receiver_clock_.Advance(time);
(...skipping 27 matching lines...) Expand all
66 65
67 cast_environment_->Logging()->InsertEncodedFrameEvent( 66 cast_environment_->Logging()->InsertEncodedFrameEvent(
68 sender_clock_->NowTicks(), 67 sender_clock_->NowTicks(),
69 FRAME_ENCODED, VIDEO_EVENT, 68 FRAME_ENCODED, VIDEO_EVENT,
70 rtp_timestamp, 69 rtp_timestamp,
71 frame_id, 70 frame_id,
72 1234, 71 1234,
73 true, 72 true,
74 5678); 73 5678);
75 74
75 cast_environment_->Logging()->InsertPacketEvent(
76 sender_clock_->NowTicks(),
77 PACKET_SENT_TO_NETWORK, VIDEO_EVENT,
78 rtp_timestamp,
79 frame_id,
80 56, 78, 1500);
81
76 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); 82 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound));
77 83
78 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); 84 AdvanceClocks(base::TimeDelta::FromMilliseconds(10));
79 cast_environment_->Logging()->InsertFrameEvent( 85 cast_environment_->Logging()->InsertFrameEvent(
80 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT, 86 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT,
81 rtp_timestamp, frame_id); 87 rtp_timestamp, frame_id);
82 88
89 cast_environment_->Logging()->InsertPacketEvent(
90 receiver_clock_.NowTicks(),
91 PACKET_RECEIVED, VIDEO_EVENT,
92 rtp_timestamp,
93 frame_id,
94 56, 78, 1500);
95
83 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); 96 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound));
84 97
85 AdvanceClocks(base::TimeDelta::FromMilliseconds(30)); 98 AdvanceClocks(base::TimeDelta::FromMilliseconds(30));
86 cast_environment_->Logging()->InsertFrameEvent( 99 cast_environment_->Logging()->InsertFrameEvent(
87 sender_clock_->NowTicks(), FRAME_ACK_RECEIVED, VIDEO_EVENT, 100 sender_clock_->NowTicks(), FRAME_ACK_RECEIVED, VIDEO_EVENT,
88 rtp_timestamp, frame_id); 101 rtp_timestamp, frame_id);
89 102
90 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); 103 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound));
91 104
92 int64 lower_bound_ms = lower_bound.InMilliseconds(); 105 int64 lower_bound_ms = lower_bound.InMilliseconds();
(...skipping 22 matching lines...) Expand all
115 128
116 cast_environment_->Logging()->InsertEncodedFrameEvent( 129 cast_environment_->Logging()->InsertEncodedFrameEvent(
117 sender_clock_->NowTicks(), 130 sender_clock_->NowTicks(),
118 FRAME_ENCODED, VIDEO_EVENT, 131 FRAME_ENCODED, VIDEO_EVENT,
119 rtp_timestamp, 132 rtp_timestamp,
120 frame_id, 133 frame_id,
121 1234, 134 1234,
122 true, 135 true,
123 5678); 136 5678);
124 137
138 cast_environment_->Logging()->InsertPacketEvent(
139 sender_clock_->NowTicks(),
140 PACKET_SENT_TO_NETWORK, VIDEO_EVENT,
141 rtp_timestamp,
142 frame_id,
143 56, 78, 1500);
144
125 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); 145 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound));
126 146
127 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); 147 AdvanceClocks(base::TimeDelta::FromMilliseconds(10));
128 base::TimeTicks event_b_time = receiver_clock_.NowTicks(); 148 base::TimeTicks event_b_time = receiver_clock_.NowTicks();
129 AdvanceClocks(base::TimeDelta::FromMilliseconds(30)); 149 AdvanceClocks(base::TimeDelta::FromMilliseconds(30));
130 base::TimeTicks event_c_time = sender_clock_->NowTicks(); 150 base::TimeTicks event_c_time = sender_clock_->NowTicks();
131 151
132 cast_environment_->Logging()->InsertFrameEvent( 152 cast_environment_->Logging()->InsertFrameEvent(
133 event_c_time, FRAME_ACK_RECEIVED, VIDEO_EVENT, rtp_timestamp, frame_id); 153 event_c_time, FRAME_ACK_RECEIVED, VIDEO_EVENT, rtp_timestamp, frame_id);
134 154
135 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); 155 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound));
136 156
157 cast_environment_->Logging()->InsertPacketEvent(
158 event_b_time,
159 PACKET_RECEIVED, VIDEO_EVENT,
160 rtp_timestamp,
161 frame_id,
162 56, 78, 1500);
163
137 cast_environment_->Logging()->InsertFrameEvent( 164 cast_environment_->Logging()->InsertFrameEvent(
138 event_b_time, FRAME_ACK_SENT, VIDEO_EVENT, rtp_timestamp, frame_id); 165 event_b_time, FRAME_ACK_SENT, VIDEO_EVENT, rtp_timestamp, frame_id);
139 166
140 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); 167 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound));
141 168
142 int64 lower_bound_ms = lower_bound.InMilliseconds(); 169 int64 lower_bound_ms = lower_bound.InMilliseconds();
143 int64 upper_bound_ms = upper_bound.InMilliseconds(); 170 int64 upper_bound_ms = upper_bound.InMilliseconds();
144 EXPECT_EQ(70, lower_bound_ms); 171 EXPECT_EQ(70, lower_bound_ms);
145 EXPECT_EQ(110, upper_bound_ms); 172 EXPECT_EQ(110, upper_bound_ms);
146 EXPECT_GE(true_offset_ms, lower_bound_ms); 173 EXPECT_GE(true_offset_ms, lower_bound_ms);
(...skipping 22 matching lines...) Expand all
169 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); 196 AdvanceClocks(base::TimeDelta::FromMilliseconds(20));
170 cast_environment_->Logging()->InsertEncodedFrameEvent( 197 cast_environment_->Logging()->InsertEncodedFrameEvent(
171 sender_clock_->NowTicks(), 198 sender_clock_->NowTicks(),
172 FRAME_ENCODED, VIDEO_EVENT, 199 FRAME_ENCODED, VIDEO_EVENT,
173 rtp_timestamp_a, 200 rtp_timestamp_a,
174 frame_id_a, 201 frame_id_a,
175 1234, 202 1234,
176 true, 203 true,
177 5678); 204 5678);
178 205
206 cast_environment_->Logging()->InsertPacketEvent(
207 sender_clock_->NowTicks(),
208 PACKET_SENT_TO_NETWORK, VIDEO_EVENT,
209 rtp_timestamp_a,
210 frame_id_a,
211 56, 78, 1500);
212
179 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); 213 AdvanceClocks(base::TimeDelta::FromMilliseconds(10));
180 cast_environment_->Logging()->InsertEncodedFrameEvent( 214 cast_environment_->Logging()->InsertEncodedFrameEvent(
181 sender_clock_->NowTicks(), 215 sender_clock_->NowTicks(),
182 FRAME_ENCODED, VIDEO_EVENT, 216 FRAME_ENCODED, VIDEO_EVENT,
183 rtp_timestamp_b, 217 rtp_timestamp_b,
184 frame_id_b, 218 frame_id_b,
185 1234, 219 1234,
186 true, 220 true,
187 5678); 221 5678);
222
223 cast_environment_->Logging()->InsertPacketEvent(
224 sender_clock_->NowTicks(),
225 PACKET_SENT_TO_NETWORK, VIDEO_EVENT,
226 rtp_timestamp_b,
227 frame_id_b,
228 56, 78, 1500);
229
188 cast_environment_->Logging()->InsertFrameEvent( 230 cast_environment_->Logging()->InsertFrameEvent(
189 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT, 231 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT,
190 rtp_timestamp_a, frame_id_a); 232 rtp_timestamp_a, frame_id_a);
191 233
192 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); 234 AdvanceClocks(base::TimeDelta::FromMilliseconds(20));
235
236 cast_environment_->Logging()->InsertPacketEvent(
237 receiver_clock_.NowTicks(),
238 PACKET_RECEIVED, VIDEO_EVENT,
239 rtp_timestamp_b,
240 frame_id_b,
241 56, 78, 1500);
242
193 cast_environment_->Logging()->InsertFrameEvent( 243 cast_environment_->Logging()->InsertFrameEvent(
194 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT, 244 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT,
195 rtp_timestamp_b, frame_id_b); 245 rtp_timestamp_b, frame_id_b);
196 246
197 AdvanceClocks(base::TimeDelta::FromMilliseconds(5)); 247 AdvanceClocks(base::TimeDelta::FromMilliseconds(5));
198 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(), 248 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(),
199 FRAME_ACK_RECEIVED, 249 FRAME_ACK_RECEIVED,
200 VIDEO_EVENT, 250 VIDEO_EVENT,
201 rtp_timestamp_b, 251 rtp_timestamp_b,
202 frame_id_b); 252 frame_id_b);
203 253
204 AdvanceClocks(base::TimeDelta::FromMilliseconds(5)); 254 AdvanceClocks(base::TimeDelta::FromMilliseconds(5));
205 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(), 255 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(),
206 FRAME_ACK_RECEIVED, 256 FRAME_ACK_RECEIVED,
207 VIDEO_EVENT, 257 VIDEO_EVENT,
208 rtp_timestamp_a, 258 rtp_timestamp_a,
209 frame_id_a); 259 frame_id_a);
210 260
211 AdvanceClocks(base::TimeDelta::FromMilliseconds(17)); 261 AdvanceClocks(base::TimeDelta::FromMilliseconds(17));
212 cast_environment_->Logging()->InsertEncodedFrameEvent( 262 cast_environment_->Logging()->InsertEncodedFrameEvent(
213 sender_clock_->NowTicks(), 263 sender_clock_->NowTicks(),
214 FRAME_ENCODED, VIDEO_EVENT, 264 FRAME_ENCODED, VIDEO_EVENT,
215 rtp_timestamp_c, 265 rtp_timestamp_c,
216 frame_id_c, 266 frame_id_c,
217 1234, 267 1234,
218 true, 268 true,
219 5678); 269 5678);
220 270
271 cast_environment_->Logging()->InsertPacketEvent(
272 sender_clock_->NowTicks(),
273 PACKET_SENT_TO_NETWORK, VIDEO_EVENT,
274 rtp_timestamp_c,
275 frame_id_c,
276 56, 78, 1500);
277
221 AdvanceClocks(base::TimeDelta::FromMilliseconds(3)); 278 AdvanceClocks(base::TimeDelta::FromMilliseconds(3));
279 cast_environment_->Logging()->InsertPacketEvent(
280 receiver_clock_.NowTicks(),
281 PACKET_RECEIVED, VIDEO_EVENT,
282 rtp_timestamp_c,
283 frame_id_c,
284 56, 78, 1500);
285
222 cast_environment_->Logging()->InsertFrameEvent( 286 cast_environment_->Logging()->InsertFrameEvent(
223 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT, 287 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT,
224 rtp_timestamp_c, frame_id_c); 288 rtp_timestamp_c, frame_id_c);
225 289
226 AdvanceClocks(base::TimeDelta::FromMilliseconds(30)); 290 AdvanceClocks(base::TimeDelta::FromMilliseconds(30));
227 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(), 291 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(),
228 FRAME_ACK_RECEIVED, 292 FRAME_ACK_RECEIVED,
229 VIDEO_EVENT, 293 VIDEO_EVENT,
230 rtp_timestamp_c, 294 rtp_timestamp_c,
231 frame_id_c); 295 frame_id_c);
232 296
233 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); 297 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound));
234 int64 lower_bound_ms = lower_bound.InMilliseconds(); 298 int64 lower_bound_ms = lower_bound.InMilliseconds();
235 int64 upper_bound_ms = upper_bound.InMilliseconds(); 299 int64 upper_bound_ms = upper_bound.InMilliseconds();
236 EXPECT_EQ(95, lower_bound_ms); 300 EXPECT_GT(lower_bound_ms, 90);
237 EXPECT_EQ(103, upper_bound_ms); 301 EXPECT_LE(lower_bound_ms, true_offset_ms);
238 EXPECT_GE(true_offset_ms, lower_bound_ms); 302 EXPECT_LT(upper_bound_ms, 150);
239 EXPECT_LE(true_offset_ms, upper_bound_ms); 303 EXPECT_GT(upper_bound_ms, true_offset_ms);
240 } 304 }
241 305
242 } // namespace cast 306 } // namespace cast
243 } // namespace media 307 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/logging/receiver_time_offset_estimator_impl.cc ('k') | media/cast/test/sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698