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

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

Issue 1543933004: Fix for stats updated twice when switching content type. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 4 years, 11 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 | « webrtc/video/send_statistics_proxy.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <string> 15 #include <string>
16 #include <vector> 16 #include <vector>
17 17
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 #include "webrtc/test/histogram.h"
19 20
20 namespace webrtc { 21 namespace webrtc {
21 22
22 class SendStatisticsProxyTest : public ::testing::Test { 23 class SendStatisticsProxyTest : public ::testing::Test {
23 public: 24 public:
24 SendStatisticsProxyTest() 25 SendStatisticsProxyTest()
25 : fake_clock_(1234), config_(GetTestConfig()), avg_delay_ms_(0), 26 : fake_clock_(1234), config_(GetTestConfig()), avg_delay_ms_(0),
26 max_delay_ms_(0) {} 27 max_delay_ms_(0) {}
27 virtual ~SendStatisticsProxyTest() {} 28 virtual ~SendStatisticsProxyTest() {}
28 29
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 } 290 }
290 291
291 TEST_F(SendStatisticsProxyTest, OnEncodedFrame) { 292 TEST_F(SendStatisticsProxyTest, OnEncodedFrame) {
292 const int kEncodeTimeMs = 11; 293 const int kEncodeTimeMs = 11;
293 statistics_proxy_->OnEncodedFrame(kEncodeTimeMs); 294 statistics_proxy_->OnEncodedFrame(kEncodeTimeMs);
294 295
295 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); 296 VideoSendStream::Stats stats = statistics_proxy_->GetStats();
296 EXPECT_EQ(kEncodeTimeMs, stats.avg_encode_time_ms); 297 EXPECT_EQ(kEncodeTimeMs, stats.avg_encode_time_ms);
297 } 298 }
298 299
300 TEST_F(SendStatisticsProxyTest, SwitchContentTypeUpdatesHistograms) {
301 test::ClearHistograms();
302 const int kMinRequiredSamples = 200;
303 const int kWidth = 640;
304 const int kHeight = 480;
305
306 for (int i = 0; i < kMinRequiredSamples; ++i)
307 statistics_proxy_->OnIncomingFrame(kWidth, kHeight);
308
309 // No switch, stats not should be updated.
310 statistics_proxy_->SetContentType(
311 VideoEncoderConfig::ContentType::kRealtimeVideo);
312 EXPECT_EQ(0, test::NumHistogramSamples("WebRTC.Video.InputWidthInPixels"));
313
314 // Switch to screenshare, real-time stats should be updated.
315 statistics_proxy_->SetContentType(VideoEncoderConfig::ContentType::kScreen);
316 EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.InputWidthInPixels"));
317 }
318
299 TEST_F(SendStatisticsProxyTest, NoSubstreams) { 319 TEST_F(SendStatisticsProxyTest, NoSubstreams) {
300 uint32_t excluded_ssrc = 320 uint32_t excluded_ssrc =
301 std::max( 321 std::max(
302 *std::max_element(config_.rtp.ssrcs.begin(), config_.rtp.ssrcs.end()), 322 *std::max_element(config_.rtp.ssrcs.begin(), config_.rtp.ssrcs.end()),
303 *std::max_element(config_.rtp.rtx.ssrcs.begin(), 323 *std::max_element(config_.rtp.rtx.ssrcs.begin(),
304 config_.rtp.rtx.ssrcs.end())) + 324 config_.rtp.rtx.ssrcs.end())) +
305 1; 325 1;
306 // From RtcpStatisticsCallback. 326 // From RtcpStatisticsCallback.
307 RtcpStatistics rtcp_stats; 327 RtcpStatistics rtcp_stats;
308 RtcpStatisticsCallback* rtcp_callback = statistics_proxy_.get(); 328 RtcpStatisticsCallback* rtcp_callback = statistics_proxy_.get();
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); 425 VideoSendStream::Stats stats = statistics_proxy_->GetStats();
406 EXPECT_EQ(static_cast<int>(bitrate.bitrate_bps), 426 EXPECT_EQ(static_cast<int>(bitrate.bitrate_bps),
407 stats.substreams[config_.rtp.ssrcs[0]].total_bitrate_bps); 427 stats.substreams[config_.rtp.ssrcs[0]].total_bitrate_bps);
408 EXPECT_EQ(static_cast<int>(bitrate.bitrate_bps), 428 EXPECT_EQ(static_cast<int>(bitrate.bitrate_bps),
409 stats.substreams[config_.rtp.ssrcs[0]].retransmit_bitrate_bps); 429 stats.substreams[config_.rtp.ssrcs[0]].retransmit_bitrate_bps);
410 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].total_bitrate_bps); 430 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].total_bitrate_bps);
411 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].retransmit_bitrate_bps); 431 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].retransmit_bitrate_bps);
412 } 432 }
413 433
414 } // namespace webrtc 434 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/send_statistics_proxy.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698