blob: 2105da3818bd1bd955fd3186e120b782a2c3af65 [file] [log] [blame]
Åsa Perssonf8ba95e2018-11-02 11:38:46 +01001/*
2 * Copyright 2018 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/cpu_speed_experiment.h"
12
13#include "rtc_base/gunit.h"
14#include "test/field_trial.h"
15#include "test/gmock.h"
16
17namespace webrtc {
18
Åsa Persson869e9fb2020-07-28 12:49:49 +020019TEST(CpuSpeedExperimentTest, NoValueIfNotEnabled) {
20 CpuSpeedExperiment cpu_speed_config;
Åsa Perssonceab7542020-09-21 14:57:04 +020021 EXPECT_FALSE(cpu_speed_config.GetValue(1, /*num_cores=*/1));
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010022}
23
24TEST(CpuSpeedExperimentTest, GetValue) {
25 webrtc::test::ScopedFieldTrials field_trials(
Åsa Perssonceab7542020-09-21 14:57:04 +020026 "WebRTC-VP8-CpuSpeed-Arm/pixels:1000,cpu_speed:-12,cores:4/");
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010027
Åsa Persson869e9fb2020-07-28 12:49:49 +020028 CpuSpeedExperiment cpu_speed_config;
Åsa Perssonceab7542020-09-21 14:57:04 +020029 EXPECT_EQ(-12, cpu_speed_config.GetValue(1, /*num_cores=*/1));
30 EXPECT_EQ(-12, cpu_speed_config.GetValue(1000, /*num_cores=*/1));
31 EXPECT_EQ(-16, cpu_speed_config.GetValue(1001, /*num_cores=*/1));
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010032}
33
Åsa Persson869e9fb2020-07-28 12:49:49 +020034TEST(CpuSpeedExperimentTest, GetValueWithList) {
35 webrtc::test::ScopedFieldTrials field_trials(
36 "WebRTC-VP8-CpuSpeed-Arm/pixels:1000|2000|3000,cpu_speed:-1|-10|-16/");
37
38 CpuSpeedExperiment cpu_speed_config;
Åsa Perssonceab7542020-09-21 14:57:04 +020039 EXPECT_EQ(-1, cpu_speed_config.GetValue(1, /*num_cores=*/1));
40 EXPECT_EQ(-1, cpu_speed_config.GetValue(1000, /*num_cores=*/1));
41 EXPECT_EQ(-10, cpu_speed_config.GetValue(1001, /*num_cores=*/1));
42 EXPECT_EQ(-10, cpu_speed_config.GetValue(2000, /*num_cores=*/1));
43 EXPECT_EQ(-16, cpu_speed_config.GetValue(2001, /*num_cores=*/1));
44 EXPECT_EQ(-16, cpu_speed_config.GetValue(3000, /*num_cores=*/1));
45 EXPECT_EQ(-16, cpu_speed_config.GetValue(3001, /*num_cores=*/1));
46}
47
48TEST(CpuSpeedExperimentTest, GetValueWithCores) {
49 webrtc::test::ScopedFieldTrials field_trials(
50 "WebRTC-VP8-CpuSpeed-Arm/"
51 "pixels:1000|2000|3000,cpu_speed:-1|-10|-16,"
52 "cpu_speed_le_cores:-5|-11|-16,cores:2/");
53
54 CpuSpeedExperiment cpu_speed_config;
55 EXPECT_EQ(-5, cpu_speed_config.GetValue(1000, /*num_cores=*/1));
56 EXPECT_EQ(-11, cpu_speed_config.GetValue(2000, /*num_cores=*/2));
57 EXPECT_EQ(-1, cpu_speed_config.GetValue(1000, /*num_cores=*/3));
58 EXPECT_EQ(-10, cpu_speed_config.GetValue(2000, /*num_cores=*/4));
59}
60
61TEST(CpuSpeedExperimentTest, GetValueWithCoresUnconfigured) {
62 webrtc::test::ScopedFieldTrials field_trials(
63 "WebRTC-VP8-CpuSpeed-Arm/"
64 "pixels:1000|2000|3000,cpu_speed:-1|-10|-16,"
65 "cpu_speed_le_cores:-5|-11|-16/");
66
67 CpuSpeedExperiment cpu_speed_config;
68 EXPECT_EQ(-1, cpu_speed_config.GetValue(1000, /*num_cores=*/1));
69 EXPECT_EQ(-10, cpu_speed_config.GetValue(2000, /*num_cores=*/2));
Åsa Persson869e9fb2020-07-28 12:49:49 +020070}
71
72TEST(CpuSpeedExperimentTest, GetValueFailsForTooSmallValue) {
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010073 // Supported range: [-16, -1].
74 webrtc::test::ScopedFieldTrials field_trials(
Åsa Persson869e9fb2020-07-28 12:49:49 +020075 "WebRTC-VP8-CpuSpeed-Arm/pixels:1000|2000|3000,cpu_speed:-1|-10|-17/");
76
77 CpuSpeedExperiment cpu_speed_config;
Åsa Perssonceab7542020-09-21 14:57:04 +020078 EXPECT_FALSE(cpu_speed_config.GetValue(1, /*num_cores=*/1));
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010079}
80
Åsa Persson869e9fb2020-07-28 12:49:49 +020081TEST(CpuSpeedExperimentTest, GetValueFailsForTooLargeValue) {
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010082 // Supported range: [-16, -1].
83 webrtc::test::ScopedFieldTrials field_trials(
Åsa Persson869e9fb2020-07-28 12:49:49 +020084 "WebRTC-VP8-CpuSpeed-Arm/pixels:1000|2000|3000,cpu_speed:0|-10|-16/");
85
86 CpuSpeedExperiment cpu_speed_config;
Åsa Perssonceab7542020-09-21 14:57:04 +020087 EXPECT_FALSE(cpu_speed_config.GetValue(1, /*num_cores=*/1));
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010088}
89
Åsa Persson869e9fb2020-07-28 12:49:49 +020090TEST(CpuSpeedExperimentTest, GetValueFailsIfPixelsDecreases) {
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010091 webrtc::test::ScopedFieldTrials field_trials(
Åsa Persson869e9fb2020-07-28 12:49:49 +020092 "WebRTC-VP8-CpuSpeed-Arm/pixels:1000|999|3000,cpu_speed:-5|-10|-16/");
93
94 CpuSpeedExperiment cpu_speed_config;
Åsa Perssonceab7542020-09-21 14:57:04 +020095 EXPECT_FALSE(cpu_speed_config.GetValue(1, /*num_cores=*/1));
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010096}
97
Åsa Persson869e9fb2020-07-28 12:49:49 +020098TEST(CpuSpeedExperimentTest, GetValueFailsIfCpuSpeedIncreases) {
Åsa Perssonf8ba95e2018-11-02 11:38:46 +010099 webrtc::test::ScopedFieldTrials field_trials(
Åsa Persson869e9fb2020-07-28 12:49:49 +0200100 "WebRTC-VP8-CpuSpeed-Arm/pixels:1000|2000|3000,cpu_speed:-5|-4|-16/");
101
102 CpuSpeedExperiment cpu_speed_config;
Åsa Perssonceab7542020-09-21 14:57:04 +0200103 EXPECT_FALSE(cpu_speed_config.GetValue(1, /*num_cores=*/1));
Åsa Perssonf8ba95e2018-11-02 11:38:46 +0100104}
105
106} // namespace webrtc