xref: /aosp_15_r20/external/webrtc/rtc_base/experiments/stable_target_rate_experiment_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1 /*
2  *  Copyright 2019 The WebRTC project authors. All Rights Reserved.
3  *
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
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "rtc_base/experiments/stable_target_rate_experiment.h"
12 
13 #include "test/field_trial.h"
14 #include "test/gtest.h"
15 
16 namespace webrtc {
17 
TEST(StableBweExperimentTest,Default)18 TEST(StableBweExperimentTest, Default) {
19   StableTargetRateExperiment config =
20       StableTargetRateExperiment::ParseFromFieldTrials();
21   EXPECT_FALSE(config.IsEnabled());
22   EXPECT_EQ(config.GetVideoHysteresisFactor(), 1.2);
23   EXPECT_EQ(config.GetScreenshareHysteresisFactor(), 1.35);
24 }
25 
TEST(StableBweExperimentTest,EnabledNoHysteresis)26 TEST(StableBweExperimentTest, EnabledNoHysteresis) {
27   webrtc::test::ScopedFieldTrials field_trials(
28       "WebRTC-StableTargetRate/enabled:true/");
29 
30   StableTargetRateExperiment config =
31       StableTargetRateExperiment::ParseFromFieldTrials();
32   EXPECT_TRUE(config.IsEnabled());
33   EXPECT_EQ(config.GetVideoHysteresisFactor(), 1.2);
34   EXPECT_EQ(config.GetScreenshareHysteresisFactor(), 1.35);
35 }
36 
TEST(StableBweExperimentTest,EnabledWithHysteresis)37 TEST(StableBweExperimentTest, EnabledWithHysteresis) {
38   webrtc::test::ScopedFieldTrials field_trials(
39       "WebRTC-StableTargetRate/"
40       "enabled:true,"
41       "video_hysteresis_factor:1.1,"
42       "screenshare_hysteresis_factor:1.2/");
43 
44   StableTargetRateExperiment config =
45       StableTargetRateExperiment::ParseFromFieldTrials();
46   EXPECT_TRUE(config.IsEnabled());
47   EXPECT_EQ(config.GetVideoHysteresisFactor(), 1.1);
48   EXPECT_EQ(config.GetScreenshareHysteresisFactor(), 1.2);
49 }
50 
TEST(StableBweExperimentTest,HysteresisOverrideVideoRateHystersis)51 TEST(StableBweExperimentTest, HysteresisOverrideVideoRateHystersis) {
52   webrtc::test::ScopedFieldTrials field_trials(
53       "WebRTC-StableTargetRate/"
54       "enabled:true,"
55       "video_hysteresis_factor:1.1,"
56       "screenshare_hysteresis_factor:1.2/"
57       "WebRTC-VideoRateControl/video_hysteresis:1.3,"
58       "screenshare_hysteresis:1.4/");
59 
60   StableTargetRateExperiment config =
61       StableTargetRateExperiment::ParseFromFieldTrials();
62   EXPECT_TRUE(config.IsEnabled());
63   EXPECT_EQ(config.GetVideoHysteresisFactor(), 1.1);
64   EXPECT_EQ(config.GetScreenshareHysteresisFactor(), 1.2);
65 }
66 
67 }  // namespace webrtc
68