OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <gtest/gtest.h> | 5 #include <gtest/gtest.h> |
6 #include <math.h> | |
6 | 7 |
7 #include "base/rand_util.h" | 8 #include "base/rand_util.h" |
8 #include "base/test/simple_test_tick_clock.h" | 9 #include "base/test/simple_test_tick_clock.h" |
9 #include "base/time/tick_clock.h" | 10 #include "base/time/tick_clock.h" |
10 #include "base/time/time.h" | 11 #include "base/time/time.h" |
11 #include "media/cast/logging/logging_impl.h" | 12 #include "media/cast/logging/logging_impl.h" |
12 #include "media/cast/test/fake_task_runner.h" | 13 #include "media/cast/test/fake_task_runner.h" |
13 | 14 |
14 namespace media { | 15 namespace media { |
15 namespace cast { | 16 namespace cast { |
(...skipping 19 matching lines...) Expand all Loading... | |
35 task_runner_ = new test::FakeTaskRunner(&testing_clock_); | 36 task_runner_ = new test::FakeTaskRunner(&testing_clock_); |
36 logging_.reset(new LoggingImpl(task_runner_, config_)); | 37 logging_.reset(new LoggingImpl(task_runner_, config_)); |
37 } | 38 } |
38 | 39 |
39 virtual ~TestLogging() {} | 40 virtual ~TestLogging() {} |
40 | 41 |
41 CastLoggingConfig config_; | 42 CastLoggingConfig config_; |
42 scoped_refptr<test::FakeTaskRunner> task_runner_; | 43 scoped_refptr<test::FakeTaskRunner> task_runner_; |
43 scoped_ptr<LoggingImpl> logging_; | 44 scoped_ptr<LoggingImpl> logging_; |
44 base::SimpleTestTickClock testing_clock_; | 45 base::SimpleTestTickClock testing_clock_; |
46 | |
47 DISALLOW_COPY_AND_ASSIGN(TestLogging); | |
45 }; | 48 }; |
46 | 49 |
47 TEST_F(TestLogging, BasicFrameLogging) { | 50 TEST_F(TestLogging, BasicFrameLogging) { |
48 base::TimeTicks start_time = testing_clock_.NowTicks(); | 51 base::TimeTicks start_time = testing_clock_.NowTicks(); |
49 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 52 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
50 uint32 rtp_timestamp = 0; | 53 uint32 rtp_timestamp = 0; |
51 uint32 frame_id = 0; | 54 uint32 frame_id = 0; |
55 base::TimeTicks now; | |
52 do { | 56 do { |
53 logging_->InsertFrameEvent(testing_clock_.NowTicks(), | 57 now = testing_clock_.NowTicks(); |
54 kAudioFrameCaptured, rtp_timestamp, frame_id); | 58 logging_->InsertFrameEvent(now, kAudioFrameCaptured, rtp_timestamp, |
59 frame_id); | |
55 testing_clock_.Advance( | 60 testing_clock_.Advance( |
56 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); | 61 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); |
57 rtp_timestamp += kFrameIntervalMs * 90; | 62 rtp_timestamp += kFrameIntervalMs * 90; |
58 ++frame_id; | 63 ++frame_id; |
59 time_interval = testing_clock_.NowTicks() - start_time; | 64 time_interval = now - start_time; |
60 } while (time_interval.InSeconds() < kIntervalTime1S); | 65 } while (time_interval.InSeconds() < kIntervalTime1S); |
66 base::TimeTicks end_time = now; | |
61 // Get logging data. | 67 // Get logging data. |
62 FrameRawMap frame_map = logging_->GetFrameRawData(); | 68 FrameRawMap frame_map = logging_->GetFrameRawData(); |
63 // Size of map should be equal to the number of frames logged. | 69 // Size of map should be equal to the number of frames logged. |
64 EXPECT_EQ(frame_id, frame_map.size()); | 70 EXPECT_EQ(frame_id, frame_map.size()); |
65 // Verify stats. | 71 // Verify stats. |
66 const FrameStatsMap* frame_stats = | 72 FrameStatsMap frame_stats = logging_->GetFrameStatsData(); |
67 logging_->GetFrameStatsData(testing_clock_.NowTicks()); | |
68 // Size of stats equals the number of events. | 73 // Size of stats equals the number of events. |
69 EXPECT_EQ(1u, frame_stats->size()); | 74 EXPECT_EQ(1u, frame_stats.size()); |
70 FrameStatsMap::const_iterator it = frame_stats->find(kAudioFrameCaptured); | 75 FrameStatsMap::const_iterator it = frame_stats.find(kAudioFrameCaptured); |
71 EXPECT_TRUE(it != frame_stats->end()); | 76 EXPECT_TRUE(it != frame_stats.end()); |
72 EXPECT_NEAR(30.3, it->second->framerate_fps, 0.1); | 77 EXPECT_EQ(0, it->second.max_delay.InMilliseconds()); |
73 EXPECT_EQ(0, it->second->bitrate_kbps); | 78 EXPECT_EQ(0, it->second.min_delay.InMilliseconds()); |
74 EXPECT_EQ(0, it->second->max_delay_ms); | 79 EXPECT_EQ(start_time, it->second.first_event_time); |
75 EXPECT_EQ(0, it->second->min_delay_ms); | 80 EXPECT_EQ(end_time, it->second.last_event_time); |
76 EXPECT_EQ(0, it->second->avg_delay_ms); | 81 EXPECT_EQ(0u, it->second.sum_size); |
82 // Number of events is equal to the number of frames. | |
83 EXPECT_EQ(static_cast<int>(frame_id), it->second.event_counter); | |
77 } | 84 } |
78 | 85 |
79 TEST_F(TestLogging, FrameLoggingWithSize) { | 86 TEST_F(TestLogging, FrameLoggingWithSize) { |
80 // Average packet size. | 87 // Average packet size. |
81 const int kBaseFrameSizeBytes = 25000; | 88 const int kBaseFrameSizeBytes = 25000; |
82 const int kRandomSizeInterval = 100; | 89 const int kRandomSizeInterval = 100; |
83 base::TimeTicks start_time = testing_clock_.NowTicks(); | 90 base::TimeTicks start_time = testing_clock_.NowTicks(); |
84 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 91 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
85 uint32 rtp_timestamp = 0; | 92 uint32 rtp_timestamp = 0; |
86 uint32 frame_id = 0; | 93 uint32 frame_id = 0; |
94 size_t sum_size = 0; | |
87 do { | 95 do { |
88 int size = kBaseFrameSizeBytes + | 96 int size = kBaseFrameSizeBytes + |
89 base::RandInt(-kRandomSizeInterval, kRandomSizeInterval); | 97 base::RandInt(-kRandomSizeInterval, kRandomSizeInterval); |
98 sum_size += static_cast<size_t>(size); | |
90 logging_->InsertFrameEventWithSize(testing_clock_.NowTicks(), | 99 logging_->InsertFrameEventWithSize(testing_clock_.NowTicks(), |
91 kAudioFrameCaptured, rtp_timestamp, frame_id, size); | 100 kAudioFrameCaptured, rtp_timestamp, frame_id, size); |
92 testing_clock_.Advance( | 101 testing_clock_.Advance( |
93 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); | 102 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); |
94 rtp_timestamp += kFrameIntervalMs * 90; | 103 rtp_timestamp += kFrameIntervalMs * 90; |
95 ++frame_id; | 104 ++frame_id; |
96 time_interval = testing_clock_.NowTicks() - start_time; | 105 time_interval = testing_clock_.NowTicks() - start_time; |
97 } while (time_interval.InSeconds() < kIntervalTime1S); | 106 } while (time_interval.InSeconds() < kIntervalTime1S); |
98 // Get logging data. | 107 // Get logging data. |
99 FrameRawMap frame_map = logging_->GetFrameRawData(); | 108 FrameRawMap frame_map = logging_->GetFrameRawData(); |
100 // Size of map should be equal to the number of frames logged. | 109 // Size of map should be equal to the number of frames logged. |
101 EXPECT_EQ(frame_id, frame_map.size()); | 110 EXPECT_EQ(frame_id, frame_map.size()); |
102 // Verify stats. | 111 // Verify stats. |
103 const FrameStatsMap* frame_stats = | 112 FrameStatsMap frame_stats = logging_->GetFrameStatsData(); |
104 logging_->GetFrameStatsData(testing_clock_.NowTicks()); | |
105 // Size of stats equals the number of events. | 113 // Size of stats equals the number of events. |
106 EXPECT_EQ(1u, frame_stats->size()); | 114 EXPECT_EQ(1u, frame_stats.size()); |
107 FrameStatsMap::const_iterator it = frame_stats->find(kAudioFrameCaptured); | 115 FrameStatsMap::const_iterator it = frame_stats.find(kAudioFrameCaptured); |
108 EXPECT_TRUE(it != frame_stats->end()); | 116 EXPECT_TRUE(it != frame_stats.end()); |
109 EXPECT_NEAR(30.3, it->second->framerate_fps, 0.1); | 117 EXPECT_EQ(0, it->second.max_delay.InMilliseconds()); |
110 EXPECT_NEAR(8 * kBaseFrameSizeBytes / (kFrameIntervalMs * 1000), | 118 EXPECT_EQ(0, it->second.min_delay.InMilliseconds()); |
111 it->second->bitrate_kbps, kRandomSizeInterval); | 119 EXPECT_EQ(0, it->second.sum_delay.InMilliseconds()); |
112 EXPECT_EQ(0, it->second->max_delay_ms); | 120 EXPECT_EQ(sum_size, it->second.sum_size); |
113 EXPECT_EQ(0, it->second->min_delay_ms); | |
114 EXPECT_EQ(0, it->second->avg_delay_ms); | |
115 } | 121 } |
116 | 122 |
117 TEST_F(TestLogging, FrameLoggingWithDelay) { | 123 TEST_F(TestLogging, FrameLoggingWithDelay) { |
118 // Average packet size. | 124 // Average packet size. |
119 const int kPlayoutDelayMs = 50; | 125 const int kPlayoutDelayMs = 50; |
120 const int kRandomSizeInterval = 20; | 126 const int kRandomSizeInterval = 20; |
121 base::TimeTicks start_time = testing_clock_.NowTicks(); | 127 base::TimeTicks start_time = testing_clock_.NowTicks(); |
122 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 128 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
123 uint32 rtp_timestamp = 0; | 129 uint32 rtp_timestamp = 0; |
124 uint32 frame_id = 0; | 130 uint32 frame_id = 0; |
125 do { | 131 do { |
126 int delay = kPlayoutDelayMs + | 132 int delay = kPlayoutDelayMs + |
127 base::RandInt(-kRandomSizeInterval, kRandomSizeInterval); | 133 base::RandInt(-kRandomSizeInterval, kRandomSizeInterval); |
128 logging_->InsertFrameEventWithDelay(testing_clock_.NowTicks(), | 134 logging_->InsertFrameEventWithDelay(testing_clock_.NowTicks(), |
129 kAudioFrameCaptured, rtp_timestamp, frame_id, | 135 kAudioFrameCaptured, rtp_timestamp, frame_id, |
130 base::TimeDelta::FromMilliseconds(delay)); | 136 base::TimeDelta::FromMilliseconds(delay)); |
131 testing_clock_.Advance( | 137 testing_clock_.Advance( |
132 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); | 138 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); |
133 rtp_timestamp += kFrameIntervalMs * 90; | 139 rtp_timestamp += kFrameIntervalMs * 90; |
134 ++frame_id; | 140 ++frame_id; |
135 time_interval = testing_clock_.NowTicks() - start_time; | 141 time_interval = testing_clock_.NowTicks() - start_time; |
136 } while (time_interval.InSeconds() < kIntervalTime1S); | 142 } while (time_interval.InSeconds() < kIntervalTime1S); |
137 // Get logging data. | 143 // Get logging data. |
138 FrameRawMap frame_map = logging_->GetFrameRawData(); | 144 FrameRawMap frame_map = logging_->GetFrameRawData(); |
139 // Size of map should be equal to the number of frames logged. | 145 // Size of map should be equal to the number of frames logged. |
140 EXPECT_EQ(frame_id, frame_map.size()); | 146 EXPECT_EQ(frame_id, frame_map.size()); |
141 // Verify stats. | 147 // Verify stats. |
142 const FrameStatsMap* frame_stats = | 148 FrameStatsMap frame_stats = logging_->GetFrameStatsData(); |
143 logging_->GetFrameStatsData(testing_clock_.NowTicks()); | |
144 // Size of stats equals the number of events. | 149 // Size of stats equals the number of events. |
145 EXPECT_EQ(1u, frame_stats->size()); | 150 EXPECT_EQ(1u, frame_stats.size()); |
146 FrameStatsMap::const_iterator it = frame_stats->find(kAudioFrameCaptured); | 151 FrameStatsMap::const_iterator it = frame_stats.find(kAudioFrameCaptured); |
147 EXPECT_TRUE(it != frame_stats->end()); | 152 EXPECT_TRUE(it != frame_stats.end()); |
148 EXPECT_NEAR(30.3, it->second->framerate_fps, 0.1); | 153 EXPECT_GE(kPlayoutDelayMs + kRandomSizeInterval, |
149 EXPECT_EQ(0, it->second->bitrate_kbps); | 154 it->second.max_delay.InMilliseconds()); |
150 EXPECT_GE(kPlayoutDelayMs + kRandomSizeInterval, it->second->max_delay_ms); | 155 EXPECT_LE(kPlayoutDelayMs - kRandomSizeInterval, |
151 EXPECT_LE(kPlayoutDelayMs - kRandomSizeInterval, it->second->min_delay_ms); | 156 it->second.min_delay.InMilliseconds()); |
152 EXPECT_NEAR(kPlayoutDelayMs, it->second->avg_delay_ms, | |
153 0.2 * kRandomSizeInterval); | |
154 } | 157 } |
155 | 158 |
156 TEST_F(TestLogging, MultipleEventFrameLogging) { | 159 TEST_F(TestLogging, MultipleEventFrameLogging) { |
157 base::TimeTicks start_time = testing_clock_.NowTicks(); | 160 base::TimeTicks start_time = testing_clock_.NowTicks(); |
158 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 161 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
159 uint32 rtp_timestamp = 0; | 162 uint32 rtp_timestamp = 0; |
160 uint32 frame_id = 0; | 163 uint32 frame_id = 0; |
161 do { | 164 do { |
162 logging_->InsertFrameEvent(testing_clock_.NowTicks(), kAudioFrameCaptured, | 165 logging_->InsertFrameEvent(testing_clock_.NowTicks(), kAudioFrameCaptured, |
163 rtp_timestamp, frame_id); | 166 rtp_timestamp, frame_id); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
203 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); | 206 base::TimeDelta::FromMilliseconds(kFrameIntervalMs)); |
204 rtp_timestamp += kFrameIntervalMs * 90; | 207 rtp_timestamp += kFrameIntervalMs * 90; |
205 ++frame_id; | 208 ++frame_id; |
206 time_interval = testing_clock_.NowTicks() - start_time; | 209 time_interval = testing_clock_.NowTicks() - start_time; |
207 } while (time_interval.InSeconds() < kIntervalTime1S); | 210 } while (time_interval.InSeconds() < kIntervalTime1S); |
208 // Get logging data. | 211 // Get logging data. |
209 PacketRawMap raw_map = logging_->GetPacketRawData(); | 212 PacketRawMap raw_map = logging_->GetPacketRawData(); |
210 // Size of map should be equal to the number of frames logged. | 213 // Size of map should be equal to the number of frames logged. |
211 EXPECT_EQ(frame_id, raw_map.size()); | 214 EXPECT_EQ(frame_id, raw_map.size()); |
212 // Verify stats. | 215 // Verify stats. |
213 const PacketStatsMap* stats_map = | 216 PacketStatsMap stats_map = logging_->GetPacketStatsData(); |
214 logging_->GetPacketStatsData(testing_clock_.NowTicks()); | |
215 // Size of stats equals the number of events. | 217 // Size of stats equals the number of events. |
216 EXPECT_EQ(1u, stats_map->size()); | 218 EXPECT_EQ(1u, stats_map.size()); |
217 PacketStatsMap::const_iterator it = stats_map->find(kPacketSentToPacer); | 219 PacketStatsMap::const_iterator it = stats_map.find(kPacketSentToPacer); |
218 EXPECT_TRUE(it != stats_map->end()); | 220 EXPECT_TRUE(it != stats_map.end()); |
219 // We only store the bitrate as a packet statistic. | |
220 EXPECT_NEAR(8 * kNumPacketsPerFrame * kBaseSize / (kFrameIntervalMs * 1000), | |
221 it->second, kSizeInterval); | |
222 } | 221 } |
223 | 222 |
224 TEST_F(TestLogging, GenericLogging) { | 223 TEST_F(TestLogging, GenericLogging) { |
225 // Insert multiple generic types. | 224 // Insert multiple generic types. |
226 const size_t kNumRuns = 1000; | 225 const size_t kNumRuns = 20;//1000; |
227 const int kBaseValue = 20; | 226 //const int kBaseValue = 20; |
227 int sum_value_rtt = 0; | |
228 int sum_value_pl = 0; | |
229 int sum_value_jitter = 0; | |
230 int64 sumsq_value_rtt = 0; | |
231 int64 sumsq_value_pl = 0; | |
232 int64 sumsq_value_jitter = 0; | |
233 int min_value, max_value; | |
228 for (size_t i = 0; i < kNumRuns; ++i) { | 234 for (size_t i = 0; i < kNumRuns; ++i) { |
229 int value = kBaseValue + base::RandInt(-5, 5); | 235 int value = 1;//kBaseValue + base::RandInt(-5, 5); |
imcheng
2014/01/23 21:17:18
nit: rm comment
mikhal1
2014/01/23 23:02:17
Done.
| |
236 sum_value_rtt += value; | |
237 sumsq_value_rtt += pow(value, 2); | |
230 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kRttMs, value); | 238 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kRttMs, value); |
231 if (i % 2) { | 239 if (i % 2) { |
232 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kPacketLoss, | 240 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kPacketLoss, |
233 value); | 241 value); |
242 sum_value_pl += value; | |
243 sumsq_value_pl += pow(value, 2); | |
234 } | 244 } |
235 if (!(i % 4)) { | 245 if (!(i % 4)) { |
236 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kJitterMs, value); | 246 logging_->InsertGenericEvent(testing_clock_.NowTicks(), kJitterMs, value); |
247 sum_value_jitter += value; | |
248 sumsq_value_jitter += pow(value, 2); | |
249 } | |
250 if (i == 0) { | |
251 min_value = value; | |
252 max_value = value; | |
253 } else if (min_value > value) { | |
254 min_value = value; | |
255 } else if (max_value < value) { | |
256 max_value = value; | |
237 } | 257 } |
238 } | 258 } |
239 GenericRawMap raw_map = logging_->GetGenericRawData(); | 259 GenericRawMap raw_map = logging_->GetGenericRawData(); |
240 const GenericStatsMap* stats_map = logging_->GetGenericStatsData(); | 260 GenericStatsMap stats_map = logging_->GetGenericStatsData(); |
241 // Size of generic map = number of different events. | 261 // Size of generic map = number of different events. |
242 EXPECT_EQ(3u, raw_map.size()); | 262 EXPECT_EQ(3u, raw_map.size()); |
243 EXPECT_EQ(3u, stats_map->size()); | 263 EXPECT_EQ(3u, stats_map.size()); |
244 // Raw events - size of internal map = number of calls. | 264 // Raw events - size of internal map = number of calls. |
245 GenericRawMap::iterator rit = raw_map.find(kRttMs); | 265 GenericRawMap::iterator rit = raw_map.find(kRttMs); |
246 EXPECT_EQ(kNumRuns, rit->second.value.size()); | 266 EXPECT_EQ(kNumRuns, rit->second.value.size()); |
247 EXPECT_EQ(kNumRuns, rit->second.timestamp.size()); | 267 EXPECT_EQ(kNumRuns, rit->second.timestamp.size()); |
248 rit = raw_map.find(kPacketLoss); | 268 rit = raw_map.find(kPacketLoss); |
249 EXPECT_EQ(kNumRuns / 2, rit->second.value.size()); | 269 EXPECT_EQ(kNumRuns / 2, rit->second.value.size()); |
250 EXPECT_EQ(kNumRuns / 2, rit->second.timestamp.size()); | 270 EXPECT_EQ(kNumRuns / 2, rit->second.timestamp.size()); |
251 rit = raw_map.find(kJitterMs); | 271 rit = raw_map.find(kJitterMs); |
252 EXPECT_EQ(kNumRuns / 4, rit->second.value.size()); | 272 EXPECT_EQ(kNumRuns / 4, rit->second.value.size()); |
253 EXPECT_EQ(kNumRuns / 4, rit->second.timestamp.size()); | 273 EXPECT_EQ(kNumRuns / 4, rit->second.timestamp.size()); |
254 // Stats - one value per event. | 274 // Stats - one value per all events. |
255 GenericStatsMap::const_iterator sit = stats_map->find(kRttMs); | 275 GenericStatsMap::const_iterator sit = stats_map.find(kRttMs); |
256 EXPECT_NEAR(kBaseValue, sit->second, 2.5); | 276 EXPECT_EQ(sum_value_rtt, sit->second.sum); |
257 sit = stats_map->find(kPacketLoss); | 277 EXPECT_EQ(sumsq_value_rtt, sit->second.sum_squared); |
258 EXPECT_NEAR(kBaseValue, sit->second, 2.5); | 278 EXPECT_GE(min_value, sit->second.min); |
259 sit = stats_map->find(kJitterMs); | 279 EXPECT_LE(max_value, sit->second.max); |
260 EXPECT_NEAR(kBaseValue, sit->second, 2.5); | 280 sit = stats_map.find(kPacketLoss); |
281 EXPECT_EQ(sum_value_pl, sit->second.sum); | |
282 EXPECT_EQ(sumsq_value_pl, sit->second.sum_squared); | |
283 EXPECT_GE(min_value, sit->second.min); | |
284 EXPECT_LE(max_value, sit->second.max); | |
285 sit = stats_map.find(kJitterMs); | |
286 EXPECT_EQ(sumsq_value_jitter, sit->second.sum_squared); | |
287 EXPECT_GE(min_value, sit->second.min); | |
288 EXPECT_LE(max_value, sit->second.max); | |
261 } | 289 } |
262 | 290 |
263 TEST_F(TestLogging, RtcpMultipleEventFrameLogging) { | 291 TEST_F(TestLogging, RtcpMultipleEventFrameLogging) { |
264 base::TimeTicks start_time = testing_clock_.NowTicks(); | 292 base::TimeTicks start_time = testing_clock_.NowTicks(); |
265 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; | 293 base::TimeDelta time_interval = testing_clock_.NowTicks() - start_time; |
266 uint32 rtp_timestamp = 0; | 294 uint32 rtp_timestamp = 0; |
267 uint32 frame_id = 0; | 295 uint32 frame_id = 0; |
268 do { | 296 do { |
269 logging_->InsertFrameEvent(testing_clock_.NowTicks(), kAudioFrameCaptured, | 297 logging_->InsertFrameEvent(testing_clock_.NowTicks(), kAudioFrameCaptured, |
270 rtp_timestamp, frame_id); | 298 rtp_timestamp, frame_id); |
(...skipping 13 matching lines...) Expand all Loading... | |
284 rtp_timestamp += kFrameIntervalMs * 90; | 312 rtp_timestamp += kFrameIntervalMs * 90; |
285 ++frame_id; | 313 ++frame_id; |
286 time_interval = testing_clock_.NowTicks() - start_time; | 314 time_interval = testing_clock_.NowTicks() - start_time; |
287 } while (time_interval.InSeconds() < kIntervalTime1S); | 315 } while (time_interval.InSeconds() < kIntervalTime1S); |
288 // Get logging data. | 316 // Get logging data. |
289 FrameRawMap frame_map = logging_->GetFrameRawData(); | 317 FrameRawMap frame_map = logging_->GetFrameRawData(); |
290 // Size of map should be equal to the number of frames logged. | 318 // Size of map should be equal to the number of frames logged. |
291 EXPECT_EQ(frame_id, frame_map.size()); | 319 EXPECT_EQ(frame_id, frame_map.size()); |
292 // Multiple events captured per frame. | 320 // Multiple events captured per frame. |
293 | 321 |
294 AudioRtcpRawMap audio_rtcp = logging_->GetAudioRtcpRawData(); | 322 AudioRtcpRawMap audio_rtcp = logging_->GetAndResetAudioRtcpRawData(); |
295 EXPECT_EQ(0u, audio_rtcp.size()); | 323 EXPECT_EQ(0u, audio_rtcp.size()); |
296 | 324 |
297 VideoRtcpRawMap video_rtcp = logging_->GetVideoRtcpRawData(); | 325 VideoRtcpRawMap video_rtcp = logging_->GetAndResetVideoRtcpRawData(); |
298 EXPECT_EQ((frame_id + 1) / 2, video_rtcp.size()); | 326 EXPECT_EQ((frame_id + 1) / 2, video_rtcp.size()); |
299 } | 327 } |
300 | 328 |
301 } // namespace cast | 329 } // namespace cast |
302 } // namespace media | 330 } // namespace media |
OLD | NEW |