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

Side by Side Diff: webrtc/video/send_statistics_proxy_unittest.cc

Issue 1478253002: Add histogram stats for send delay for a sent video stream. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 8 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 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 // This file includes unit tests for SendStatisticsProxy. 11 // This file includes unit tests for SendStatisticsProxy.
12 #include "webrtc/video/send_statistics_proxy.h" 12 #include "webrtc/video/send_statistics_proxy.h"
13 13
14 #include <map> 14 #include <map>
15 #include <memory> 15 #include <memory>
16 #include <string> 16 #include <string>
17 #include <vector> 17 #include <vector>
18 18
19 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 #include "webrtc/system_wrappers/include/metrics.h" 20 #include "webrtc/system_wrappers/include/metrics.h"
21 #include "webrtc/test/histogram.h" 21 #include "webrtc/test/histogram.h"
22 22
23 namespace webrtc { 23 namespace webrtc {
24 namespace {
25 const int64_t kMaxPacketDelayMs = 11000;
26 } // namespace
24 27
25 static const uint32_t kFirstSsrc = 17; 28 static const uint32_t kFirstSsrc = 17;
26 static const uint32_t kSecondSsrc = 42; 29 static const uint32_t kSecondSsrc = 42;
27 static const uint32_t kFirstRtxSsrc = 18; 30 static const uint32_t kFirstRtxSsrc = 18;
28 static const uint32_t kSecondRtxSsrc = 43; 31 static const uint32_t kSecondRtxSsrc = 43;
29 32
30 class SendStatisticsProxyTest : public ::testing::Test { 33 class SendStatisticsProxyTest : public ::testing::Test {
31 public: 34 public:
32 SendStatisticsProxyTest() 35 SendStatisticsProxyTest()
33 : fake_clock_(1234), config_(GetTestConfig()), avg_delay_ms_(0), 36 : fake_clock_(1234), config_(GetTestConfig()), avg_delay_ms_(0),
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 VideoSendStream::Config config_; 102 VideoSendStream::Config config_;
100 int avg_delay_ms_; 103 int avg_delay_ms_;
101 int max_delay_ms_; 104 int max_delay_ms_;
102 VideoSendStream::Stats expected_; 105 VideoSendStream::Stats expected_;
103 typedef std::map<uint32_t, VideoSendStream::StreamStats>::const_iterator 106 typedef std::map<uint32_t, VideoSendStream::StreamStats>::const_iterator
104 StreamIterator; 107 StreamIterator;
105 }; 108 };
106 109
107 TEST_F(SendStatisticsProxyTest, RtcpStatistics) { 110 TEST_F(SendStatisticsProxyTest, RtcpStatistics) {
108 RtcpStatisticsCallback* callback = statistics_proxy_.get(); 111 RtcpStatisticsCallback* callback = statistics_proxy_.get();
109 for (std::vector<uint32_t>::const_iterator it = config_.rtp.ssrcs.begin(); 112 for (const auto& ssrc : config_.rtp.ssrcs) {
110 it != config_.rtp.ssrcs.end();
111 ++it) {
112 const uint32_t ssrc = *it;
113 VideoSendStream::StreamStats& ssrc_stats = expected_.substreams[ssrc]; 113 VideoSendStream::StreamStats& ssrc_stats = expected_.substreams[ssrc];
114 114
115 // Add statistics with some arbitrary, but unique, numbers. 115 // Add statistics with some arbitrary, but unique, numbers.
116 uint32_t offset = ssrc * sizeof(RtcpStatistics); 116 uint32_t offset = ssrc * sizeof(RtcpStatistics);
117 ssrc_stats.rtcp_stats.cumulative_lost = offset; 117 ssrc_stats.rtcp_stats.cumulative_lost = offset;
118 ssrc_stats.rtcp_stats.extended_max_sequence_number = offset + 1; 118 ssrc_stats.rtcp_stats.extended_max_sequence_number = offset + 1;
119 ssrc_stats.rtcp_stats.fraction_lost = offset + 2; 119 ssrc_stats.rtcp_stats.fraction_lost = offset + 2;
120 ssrc_stats.rtcp_stats.jitter = offset + 3; 120 ssrc_stats.rtcp_stats.jitter = offset + 3;
121 callback->StatisticsUpdated(ssrc_stats.rtcp_stats, ssrc); 121 callback->StatisticsUpdated(ssrc_stats.rtcp_stats, ssrc);
122 } 122 }
123 for (std::vector<uint32_t>::const_iterator it = config_.rtp.rtx.ssrcs.begin(); 123 for (const auto& ssrc : config_.rtp.rtx.ssrcs) {
124 it != config_.rtp.rtx.ssrcs.end();
125 ++it) {
126 const uint32_t ssrc = *it;
127 VideoSendStream::StreamStats& ssrc_stats = expected_.substreams[ssrc]; 124 VideoSendStream::StreamStats& ssrc_stats = expected_.substreams[ssrc];
128 125
129 // Add statistics with some arbitrary, but unique, numbers. 126 // Add statistics with some arbitrary, but unique, numbers.
130 uint32_t offset = ssrc * sizeof(RtcpStatistics); 127 uint32_t offset = ssrc * sizeof(RtcpStatistics);
131 ssrc_stats.rtcp_stats.cumulative_lost = offset; 128 ssrc_stats.rtcp_stats.cumulative_lost = offset;
132 ssrc_stats.rtcp_stats.extended_max_sequence_number = offset + 1; 129 ssrc_stats.rtcp_stats.extended_max_sequence_number = offset + 1;
133 ssrc_stats.rtcp_stats.fraction_lost = offset + 2; 130 ssrc_stats.rtcp_stats.fraction_lost = offset + 2;
134 ssrc_stats.rtcp_stats.jitter = offset + 3; 131 ssrc_stats.rtcp_stats.jitter = offset + 3;
135 callback->StatisticsUpdated(ssrc_stats.rtcp_stats, ssrc); 132 callback->StatisticsUpdated(ssrc_stats.rtcp_stats, ssrc);
136 } 133 }
(...skipping 20 matching lines...) Expand all
157 statistics_proxy_->OnSuspendChange(true); 154 statistics_proxy_->OnSuspendChange(true);
158 EXPECT_TRUE(statistics_proxy_->GetStats().suspended); 155 EXPECT_TRUE(statistics_proxy_->GetStats().suspended);
159 156
160 // Verify that we can set it back to false again. 157 // Verify that we can set it back to false again.
161 statistics_proxy_->OnSuspendChange(false); 158 statistics_proxy_->OnSuspendChange(false);
162 EXPECT_FALSE(statistics_proxy_->GetStats().suspended); 159 EXPECT_FALSE(statistics_proxy_->GetStats().suspended);
163 } 160 }
164 161
165 TEST_F(SendStatisticsProxyTest, FrameCounts) { 162 TEST_F(SendStatisticsProxyTest, FrameCounts) {
166 FrameCountObserver* observer = statistics_proxy_.get(); 163 FrameCountObserver* observer = statistics_proxy_.get();
167 for (std::vector<uint32_t>::const_iterator it = config_.rtp.ssrcs.begin(); 164 for (const auto& ssrc : config_.rtp.ssrcs) {
168 it != config_.rtp.ssrcs.end();
169 ++it) {
170 const uint32_t ssrc = *it;
171 // Add statistics with some arbitrary, but unique, numbers. 165 // Add statistics with some arbitrary, but unique, numbers.
172 VideoSendStream::StreamStats& stats = expected_.substreams[ssrc]; 166 VideoSendStream::StreamStats& stats = expected_.substreams[ssrc];
173 uint32_t offset = ssrc * sizeof(VideoSendStream::StreamStats); 167 uint32_t offset = ssrc * sizeof(VideoSendStream::StreamStats);
174 FrameCounts frame_counts; 168 FrameCounts frame_counts;
175 frame_counts.key_frames = offset; 169 frame_counts.key_frames = offset;
176 frame_counts.delta_frames = offset + 1; 170 frame_counts.delta_frames = offset + 1;
177 stats.frame_counts = frame_counts; 171 stats.frame_counts = frame_counts;
178 observer->FrameCountUpdated(frame_counts, ssrc); 172 observer->FrameCountUpdated(frame_counts, ssrc);
179 } 173 }
180 for (std::vector<uint32_t>::const_iterator it = config_.rtp.rtx.ssrcs.begin(); 174 for (const auto& ssrc : config_.rtp.rtx.ssrcs) {
181 it != config_.rtp.rtx.ssrcs.end();
182 ++it) {
183 const uint32_t ssrc = *it;
184 // Add statistics with some arbitrary, but unique, numbers. 175 // Add statistics with some arbitrary, but unique, numbers.
185 VideoSendStream::StreamStats& stats = expected_.substreams[ssrc]; 176 VideoSendStream::StreamStats& stats = expected_.substreams[ssrc];
186 uint32_t offset = ssrc * sizeof(VideoSendStream::StreamStats); 177 uint32_t offset = ssrc * sizeof(VideoSendStream::StreamStats);
187 FrameCounts frame_counts; 178 FrameCounts frame_counts;
188 frame_counts.key_frames = offset; 179 frame_counts.key_frames = offset;
189 frame_counts.delta_frames = offset + 1; 180 frame_counts.delta_frames = offset + 1;
190 stats.frame_counts = frame_counts; 181 stats.frame_counts = frame_counts;
191 observer->FrameCountUpdated(frame_counts, ssrc); 182 observer->FrameCountUpdated(frame_counts, ssrc);
192 } 183 }
193 184
194 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); 185 VideoSendStream::Stats stats = statistics_proxy_->GetStats();
195 ExpectEqual(expected_, stats); 186 ExpectEqual(expected_, stats);
196 } 187 }
197 188
198 TEST_F(SendStatisticsProxyTest, DataCounters) { 189 TEST_F(SendStatisticsProxyTest, DataCounters) {
199 StreamDataCountersCallback* callback = statistics_proxy_.get(); 190 StreamDataCountersCallback* callback = statistics_proxy_.get();
200 for (std::vector<uint32_t>::const_iterator it = config_.rtp.ssrcs.begin(); 191 for (const auto& ssrc : config_.rtp.ssrcs) {
201 it != config_.rtp.ssrcs.end();
202 ++it) {
203 const uint32_t ssrc = *it;
204 StreamDataCounters& counters = expected_.substreams[ssrc].rtp_stats; 192 StreamDataCounters& counters = expected_.substreams[ssrc].rtp_stats;
205 // Add statistics with some arbitrary, but unique, numbers. 193 // Add statistics with some arbitrary, but unique, numbers.
206 size_t offset = ssrc * sizeof(StreamDataCounters); 194 size_t offset = ssrc * sizeof(StreamDataCounters);
207 uint32_t offset_uint32 = static_cast<uint32_t>(offset); 195 uint32_t offset_uint32 = static_cast<uint32_t>(offset);
208 counters.transmitted.payload_bytes = offset; 196 counters.transmitted.payload_bytes = offset;
209 counters.transmitted.header_bytes = offset + 1; 197 counters.transmitted.header_bytes = offset + 1;
210 counters.fec.packets = offset_uint32 + 2; 198 counters.fec.packets = offset_uint32 + 2;
211 counters.transmitted.padding_bytes = offset + 3; 199 counters.transmitted.padding_bytes = offset + 3;
212 counters.retransmitted.packets = offset_uint32 + 4; 200 counters.retransmitted.packets = offset_uint32 + 4;
213 counters.transmitted.packets = offset_uint32 + 5; 201 counters.transmitted.packets = offset_uint32 + 5;
214 callback->DataCountersUpdated(counters, ssrc); 202 callback->DataCountersUpdated(counters, ssrc);
215 } 203 }
216 for (std::vector<uint32_t>::const_iterator it = config_.rtp.rtx.ssrcs.begin(); 204 for (const auto& ssrc : config_.rtp.rtx.ssrcs) {
217 it != config_.rtp.rtx.ssrcs.end();
218 ++it) {
219 const uint32_t ssrc = *it;
220 StreamDataCounters& counters = expected_.substreams[ssrc].rtp_stats; 205 StreamDataCounters& counters = expected_.substreams[ssrc].rtp_stats;
221 // Add statistics with some arbitrary, but unique, numbers. 206 // Add statistics with some arbitrary, but unique, numbers.
222 size_t offset = ssrc * sizeof(StreamDataCounters); 207 size_t offset = ssrc * sizeof(StreamDataCounters);
223 uint32_t offset_uint32 = static_cast<uint32_t>(offset); 208 uint32_t offset_uint32 = static_cast<uint32_t>(offset);
224 counters.transmitted.payload_bytes = offset; 209 counters.transmitted.payload_bytes = offset;
225 counters.transmitted.header_bytes = offset + 1; 210 counters.transmitted.header_bytes = offset + 1;
226 counters.fec.packets = offset_uint32 + 2; 211 counters.fec.packets = offset_uint32 + 2;
227 counters.transmitted.padding_bytes = offset + 3; 212 counters.transmitted.padding_bytes = offset + 3;
228 counters.retransmitted.packets = offset_uint32 + 4; 213 counters.retransmitted.packets = offset_uint32 + 4;
229 counters.transmitted.packets = offset_uint32 + 5; 214 counters.transmitted.packets = offset_uint32 + 5;
230 callback->DataCountersUpdated(counters, ssrc); 215 callback->DataCountersUpdated(counters, ssrc);
231 } 216 }
232 217
233 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); 218 VideoSendStream::Stats stats = statistics_proxy_->GetStats();
234 ExpectEqual(expected_, stats); 219 ExpectEqual(expected_, stats);
235 } 220 }
236 221
237 TEST_F(SendStatisticsProxyTest, Bitrate) { 222 TEST_F(SendStatisticsProxyTest, Bitrate) {
238 BitrateStatisticsObserver* observer = statistics_proxy_.get(); 223 BitrateStatisticsObserver* observer = statistics_proxy_.get();
239 for (std::vector<uint32_t>::const_iterator it = config_.rtp.ssrcs.begin(); 224 for (const auto& ssrc : config_.rtp.ssrcs) {
240 it != config_.rtp.ssrcs.end();
241 ++it) {
242 const uint32_t ssrc = *it;
243 BitrateStatistics total; 225 BitrateStatistics total;
244 BitrateStatistics retransmit; 226 BitrateStatistics retransmit;
245 // Use ssrc as bitrate_bps to get a unique value for each stream. 227 // Use ssrc as bitrate_bps to get a unique value for each stream.
246 total.bitrate_bps = ssrc; 228 total.bitrate_bps = ssrc;
247 retransmit.bitrate_bps = ssrc + 1; 229 retransmit.bitrate_bps = ssrc + 1;
248 observer->Notify(total, retransmit, ssrc); 230 observer->Notify(total, retransmit, ssrc);
249 expected_.substreams[ssrc].total_bitrate_bps = total.bitrate_bps; 231 expected_.substreams[ssrc].total_bitrate_bps = total.bitrate_bps;
250 expected_.substreams[ssrc].retransmit_bitrate_bps = retransmit.bitrate_bps; 232 expected_.substreams[ssrc].retransmit_bitrate_bps = retransmit.bitrate_bps;
251 } 233 }
252 for (std::vector<uint32_t>::const_iterator it = config_.rtp.rtx.ssrcs.begin(); 234 for (const auto& ssrc : config_.rtp.rtx.ssrcs) {
253 it != config_.rtp.rtx.ssrcs.end();
254 ++it) {
255 const uint32_t ssrc = *it;
256 BitrateStatistics total; 235 BitrateStatistics total;
257 BitrateStatistics retransmit; 236 BitrateStatistics retransmit;
258 // Use ssrc as bitrate_bps to get a unique value for each stream. 237 // Use ssrc as bitrate_bps to get a unique value for each stream.
259 total.bitrate_bps = ssrc; 238 total.bitrate_bps = ssrc;
260 retransmit.bitrate_bps = ssrc + 1; 239 retransmit.bitrate_bps = ssrc + 1;
261 observer->Notify(total, retransmit, ssrc); 240 observer->Notify(total, retransmit, ssrc);
262 expected_.substreams[ssrc].total_bitrate_bps = total.bitrate_bps; 241 expected_.substreams[ssrc].total_bitrate_bps = total.bitrate_bps;
263 expected_.substreams[ssrc].retransmit_bitrate_bps = retransmit.bitrate_bps; 242 expected_.substreams[ssrc].retransmit_bitrate_bps = retransmit.bitrate_bps;
264 } 243 }
265 244
266 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); 245 VideoSendStream::Stats stats = statistics_proxy_->GetStats();
267 ExpectEqual(expected_, stats); 246 ExpectEqual(expected_, stats);
268 } 247 }
269 248
270 TEST_F(SendStatisticsProxyTest, SendSideDelay) { 249 TEST_F(SendStatisticsProxyTest, SendSideDelay) {
271 SendSideDelayObserver* observer = statistics_proxy_.get(); 250 SendSideDelayObserver* observer = statistics_proxy_.get();
272 for (std::vector<uint32_t>::const_iterator it = config_.rtp.ssrcs.begin(); 251 for (const auto& ssrc : config_.rtp.ssrcs) {
273 it != config_.rtp.ssrcs.end();
274 ++it) {
275 const uint32_t ssrc = *it;
276 // Use ssrc as avg_delay_ms and max_delay_ms to get a unique value for each 252 // Use ssrc as avg_delay_ms and max_delay_ms to get a unique value for each
277 // stream. 253 // stream.
278 int avg_delay_ms = ssrc; 254 int avg_delay_ms = ssrc;
279 int max_delay_ms = ssrc + 1; 255 int max_delay_ms = ssrc + 1;
280 observer->SendSideDelayUpdated(avg_delay_ms, max_delay_ms, ssrc); 256 observer->SendSideDelayUpdated(avg_delay_ms, max_delay_ms, ssrc);
281 expected_.substreams[ssrc].avg_delay_ms = avg_delay_ms; 257 expected_.substreams[ssrc].avg_delay_ms = avg_delay_ms;
282 expected_.substreams[ssrc].max_delay_ms = max_delay_ms; 258 expected_.substreams[ssrc].max_delay_ms = max_delay_ms;
283 } 259 }
284 for (std::vector<uint32_t>::const_iterator it = config_.rtp.rtx.ssrcs.begin(); 260 for (const auto& ssrc : config_.rtp.rtx.ssrcs) {
285 it != config_.rtp.rtx.ssrcs.end();
286 ++it) {
287 const uint32_t ssrc = *it;
288 // Use ssrc as avg_delay_ms and max_delay_ms to get a unique value for each 261 // Use ssrc as avg_delay_ms and max_delay_ms to get a unique value for each
289 // stream. 262 // stream.
290 int avg_delay_ms = ssrc; 263 int avg_delay_ms = ssrc;
291 int max_delay_ms = ssrc + 1; 264 int max_delay_ms = ssrc + 1;
292 observer->SendSideDelayUpdated(avg_delay_ms, max_delay_ms, ssrc); 265 observer->SendSideDelayUpdated(avg_delay_ms, max_delay_ms, ssrc);
293 expected_.substreams[ssrc].avg_delay_ms = avg_delay_ms; 266 expected_.substreams[ssrc].avg_delay_ms = avg_delay_ms;
294 expected_.substreams[ssrc].max_delay_ms = max_delay_ms; 267 expected_.substreams[ssrc].max_delay_ms = max_delay_ms;
295 } 268 }
296 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); 269 VideoSendStream::Stats stats = statistics_proxy_->GetStats();
297 ExpectEqual(expected_, stats); 270 ExpectEqual(expected_, stats);
298 } 271 }
299 272
273 TEST_F(SendStatisticsProxyTest, VerifySendDelayHistogramStats) {
274 test::ClearHistograms();
275 const int kMinRequiredSamples = 200;
276 const int64_t kSendDelayInMs = 5;
277 SendPacketObserver* observer = statistics_proxy_.get();
278 const uint32_t ssrc = *config_.rtp.ssrcs.begin();
279
280 uint16_t packet_id = 0;
281 for (int i = 0; i < kMinRequiredSamples; ++i) {
282 observer->OnSendPacket(++packet_id, fake_clock_.TimeInMilliseconds(), ssrc);
283 // Packet sent to transport.
284 fake_clock_.AdvanceTimeMilliseconds(kSendDelayInMs);
285 EXPECT_TRUE(statistics_proxy_->OnSentPacket(packet_id));
286 }
287 statistics_proxy_.reset();
288 EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.SendDelayInMs"));
289 EXPECT_EQ(kSendDelayInMs,
290 test::LastHistogramSample("WebRTC.Video.SendDelayInMs"));
291 }
292
293 TEST_F(SendStatisticsProxyTest, OnSentPacket) {
294 const uint16_t kPacketId = 2345;
295 SendPacketObserver* observer = statistics_proxy_.get();
296 const uint32_t ssrc = *config_.rtp.ssrcs.begin();
297
298 observer->OnSendPacket(kPacketId, fake_clock_.TimeInMilliseconds(), ssrc);
299 fake_clock_.AdvanceTimeMilliseconds(kMaxPacketDelayMs - 1);
300 observer->OnSendPacket(kPacketId + 1, fake_clock_.TimeInMilliseconds(), ssrc);
301
302 // Verify that packets are found.
303 EXPECT_TRUE(statistics_proxy_->OnSentPacket(kPacketId));
304 EXPECT_TRUE(statistics_proxy_->OnSentPacket(kPacketId + 1));
305 // Packets found, should have been removed.
306 EXPECT_FALSE(statistics_proxy_->OnSentPacket(kPacketId));
307 EXPECT_FALSE(statistics_proxy_->OnSentPacket(kPacketId + 1));
308 }
309
310 TEST_F(SendStatisticsProxyTest, OnSendPacketRemovesOldPackets) {
311 SendPacketObserver* observer = statistics_proxy_.get();
312 const uint32_t ssrc = *config_.rtp.ssrcs.begin();
313 const int64_t kCaptureTimeMs = fake_clock_.TimeInMilliseconds();
314
315 observer->OnSendPacket(0xffffu, kCaptureTimeMs, ssrc);
316 observer->OnSendPacket(0u, kCaptureTimeMs, ssrc);
317 observer->OnSendPacket(1u, kCaptureTimeMs + 1, ssrc);
318 fake_clock_.AdvanceTimeMilliseconds(kMaxPacketDelayMs); // 0xffff, 0 -> old.
319 observer->OnSendPacket(2u, kCaptureTimeMs + 2, ssrc);
320
321 EXPECT_FALSE(statistics_proxy_->OnSentPacket(0xffffu)); // Old removed.
322 EXPECT_FALSE(statistics_proxy_->OnSentPacket(0u)); // Old removed.
323 EXPECT_TRUE(statistics_proxy_->OnSentPacket(1u));
324 EXPECT_TRUE(statistics_proxy_->OnSentPacket(2u));
325 }
326
300 TEST_F(SendStatisticsProxyTest, OnEncodedFrameTimeMeasured) { 327 TEST_F(SendStatisticsProxyTest, OnEncodedFrameTimeMeasured) {
301 const int kEncodeTimeMs = 11; 328 const int kEncodeTimeMs = 11;
302 CpuOveruseMetrics metrics; 329 CpuOveruseMetrics metrics;
303 metrics.encode_usage_percent = 80; 330 metrics.encode_usage_percent = 80;
304 statistics_proxy_->OnEncodedFrameTimeMeasured(kEncodeTimeMs, metrics); 331 statistics_proxy_->OnEncodedFrameTimeMeasured(kEncodeTimeMs, metrics);
305 332
306 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); 333 VideoSendStream::Stats stats = statistics_proxy_->GetStats();
307 EXPECT_EQ(kEncodeTimeMs, stats.avg_encode_time_ms); 334 EXPECT_EQ(kEncodeTimeMs, stats.avg_encode_time_ms);
308 EXPECT_EQ(metrics.encode_usage_percent, stats.encode_usage_percent); 335 EXPECT_EQ(metrics.encode_usage_percent, stats.encode_usage_percent);
309 } 336 }
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 731
705 EXPECT_EQ(1, test::NumHistogramSamples( 732 EXPECT_EQ(1, test::NumHistogramSamples(
706 "WebRTC.Video.Screenshare.FecBitrateSentInKbps")); 733 "WebRTC.Video.Screenshare.FecBitrateSentInKbps"));
707 EXPECT_EQ(static_cast<int>((rtx_counters.fec.TotalBytes() * 2 * 8) / 734 EXPECT_EQ(static_cast<int>((rtx_counters.fec.TotalBytes() * 2 * 8) /
708 metrics::kMinRunTimeInSeconds / 1000), 735 metrics::kMinRunTimeInSeconds / 1000),
709 test::LastHistogramSample( 736 test::LastHistogramSample(
710 "WebRTC.Video.Screenshare.FecBitrateSentInKbps")); 737 "WebRTC.Video.Screenshare.FecBitrateSentInKbps"));
711 } 738 }
712 739
713 } // namespace webrtc 740 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698