blob: 5c0a1c83b1b05f0a64365576688815fe901ba484 [file] [log] [blame]
jackqdyulei455e90a2017-02-09 15:29:16 -08001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Kweku Adams7fb72a42019-01-08 16:08:49 -080016package com.android.server.power.batterysaver;
jackqdyulei455e90a2017-02-09 15:29:16 -080017
Kweku Adams9f488e22019-01-14 16:25:08 -080018import static com.android.server.power.batterysaver.BatterySaverPolicy.POLICY_LEVEL_ADAPTIVE;
19import static com.android.server.power.batterysaver.BatterySaverPolicy.POLICY_LEVEL_FULL;
20import static com.android.server.power.batterysaver.BatterySaverPolicy.POLICY_LEVEL_OFF;
21
Makoto Onukibd7a6252018-05-10 13:41:39 -070022import static com.google.common.truth.Truth.assertThat;
23
Makoto Onukibd7a6252018-05-10 13:41:39 -070024import android.content.Context;
Makoto Onukia3e0e0c2018-05-08 12:59:09 -070025import android.os.PowerManager;
Makoto Onuki2eccd022017-11-01 13:44:23 -070026import android.os.PowerManager.ServiceType;
jackqdyulei455e90a2017-02-09 15:29:16 -080027import android.os.PowerSaveState;
Makoto Onuki66a78122017-11-14 15:03:21 -080028import android.provider.Settings.Global;
jackqdyulei455e90a2017-02-09 15:29:16 -080029import android.test.AndroidTestCase;
30import android.test.suitebuilder.annotation.SmallTest;
Makoto Onuki66a78122017-11-14 15:03:21 -080031import android.util.ArrayMap;
32
33import com.android.frameworks.servicestests.R;
Makoto Onuki3aaed292017-11-15 16:31:24 -080034import com.android.internal.annotations.VisibleForTesting;
Kweku Adams9f488e22019-01-14 16:25:08 -080035import com.android.server.power.batterysaver.BatterySaverPolicy.Policy;
jackqdyulei29c82ab2017-03-10 14:09:16 -080036
jackqdyulei455e90a2017-02-09 15:29:16 -080037import org.mockito.MockitoAnnotations;
38
jackqdyulei455e90a2017-02-09 15:29:16 -080039/**
Kweku Adams7fb72a42019-01-08 16:08:49 -080040 * Tests for {@link com.android.server.power.batterysaver.BatterySaverPolicy}
jackqdyulei455e90a2017-02-09 15:29:16 -080041 */
42public class BatterySaverPolicyTest extends AndroidTestCase {
Kweku Adams4db6a3c2019-02-04 16:06:13 -080043 private static final int MAX_SERVICE_TYPE = 16;
jackqdyulei455e90a2017-02-09 15:29:16 -080044 private static final float BRIGHTNESS_FACTOR = 0.7f;
45 private static final float DEFAULT_BRIGHTNESS_FACTOR = 0.5f;
46 private static final float PRECISION = 0.001f;
Kweku Adams9f488e22019-01-14 16:25:08 -080047 private static final int GPS_MODE = 0; // LOCATION_MODE_NO_CHANGE
Makoto Onukia3e0e0c2018-05-08 12:59:09 -070048 private static final int DEFAULT_GPS_MODE =
49 PowerManager.LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF;
jackqdyulei455e90a2017-02-09 15:29:16 -080050 private static final String BATTERY_SAVER_CONSTANTS = "vibration_disabled=true,"
Kweku Adams9f488e22019-01-14 16:25:08 -080051 + "advertise_is_enabled=true,"
jackqdyulei455e90a2017-02-09 15:29:16 -080052 + "animation_disabled=false,"
53 + "soundtrigger_disabled=true,"
54 + "firewall_disabled=false,"
jackqdyulei29c82ab2017-03-10 14:09:16 -080055 + "datasaver_disabled=false,"
jackqdyulei455e90a2017-02-09 15:29:16 -080056 + "adjust_brightness_disabled=true,"
57 + "adjust_brightness_factor=0.7,"
58 + "fullbackup_deferred=true,"
59 + "keyvaluebackup_deferred=false,"
Kweku Adams9f488e22019-01-14 16:25:08 -080060 + "gps_mode=0," // LOCATION_MODE_NO_CHANGE
Kweku Adamsb396ccf2018-09-17 16:37:15 -070061 + "quick_doze_enabled=true";
jackqdyulei455e90a2017-02-09 15:29:16 -080062 private static final String BATTERY_SAVER_INCORRECT_CONSTANTS = "vi*,!=,,true";
63
Makoto Onuki66a78122017-11-14 15:03:21 -080064 private class BatterySaverPolicyForTest extends BatterySaverPolicy {
Kweku Adams7fb72a42019-01-08 16:08:49 -080065 BatterySaverPolicyForTest(Object lock, Context context,
Makoto Onukibd7a6252018-05-10 13:41:39 -070066 BatterySavingStats batterySavingStats) {
67 super(lock, context, batterySavingStats);
Makoto Onuki66a78122017-11-14 15:03:21 -080068 }
69
70 @Override
71 String getGlobalSetting(String key) {
72 return mMockGlobalSettings.get(key);
73 }
74
75 @Override
76 int getDeviceSpecificConfigResId() {
77 return mDeviceSpecificConfigResId;
78 }
Makoto Onuki3aaed292017-11-15 16:31:24 -080079
Makoto Onuki3aaed292017-11-15 16:31:24 -080080 @VisibleForTesting
81 void onChange() {
82 onChange(true, null);
83 }
Makoto Onuki66a78122017-11-14 15:03:21 -080084 }
85
Makoto Onuki66a78122017-11-14 15:03:21 -080086 private BatterySaverPolicyForTest mBatterySaverPolicy;
87
88 private final ArrayMap<String, String> mMockGlobalSettings = new ArrayMap<>();
89 private int mDeviceSpecificConfigResId = R.string.config_batterySaverDeviceSpecificConfig_1;
jackqdyulei455e90a2017-02-09 15:29:16 -080090
91 public void setUp() throws Exception {
92 super.setUp();
93 MockitoAnnotations.initMocks(this);
Makoto Onukibd7a6252018-05-10 13:41:39 -070094 final Object lock = new Object();
95 mBatterySaverPolicy = new BatterySaverPolicyForTest(lock, getContext(),
Kweku Adams25b1c162019-01-31 13:44:50 -080096 new BatterySavingStats(lock));
Makoto Onukibd7a6252018-05-10 13:41:39 -070097 mBatterySaverPolicy.systemReady();
Kweku Adams9f488e22019-01-14 16:25:08 -080098
99 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800100 }
101
102 @SmallTest
103 public void testGetBatterySaverPolicy_PolicyNull_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700104 testServiceDefaultValue_On(ServiceType.NULL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800105 }
106
107 @SmallTest
108 public void testGetBatterySaverPolicy_PolicyVibration_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700109 testServiceDefaultValue_On(ServiceType.VIBRATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800110 }
111
112 @SmallTest
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700113 public void testGetBatterySaverPolicy_PolicyVibration_WithAccessibilityEnabled() {
Makoto Onukibd7a6252018-05-10 13:41:39 -0700114 mBatterySaverPolicy.setAccessibilityEnabledForTest(true);
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700115 testServiceDefaultValue_Off(ServiceType.VIBRATION);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700116 }
117
118 @SmallTest
jackqdyulei455e90a2017-02-09 15:29:16 -0800119 public void testGetBatterySaverPolicy_PolicySound_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700120 testServiceDefaultValue_On(ServiceType.SOUND);
jackqdyulei455e90a2017-02-09 15:29:16 -0800121 }
122
123 @SmallTest
124 public void testGetBatterySaverPolicy_PolicyFullBackup_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700125 testServiceDefaultValue_On(ServiceType.FULL_BACKUP);
jackqdyulei455e90a2017-02-09 15:29:16 -0800126 }
127
128 @SmallTest
129 public void testGetBatterySaverPolicy_PolicyKeyValueBackup_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700130 testServiceDefaultValue_On(ServiceType.KEYVALUE_BACKUP);
jackqdyulei455e90a2017-02-09 15:29:16 -0800131 }
132
133 @SmallTest
134 public void testGetBatterySaverPolicy_PolicyAnimation_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700135 testServiceDefaultValue_Off(ServiceType.ANIMATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800136 }
137
138 @SmallTest
139 public void testGetBatterySaverPolicy_PolicyBatteryStats_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700140 testServiceDefaultValue_On(ServiceType.BATTERY_STATS);
jackqdyulei455e90a2017-02-09 15:29:16 -0800141 }
142
143 @SmallTest
144 public void testGetBatterySaverPolicy_PolicyNetworkFirewall_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700145 testServiceDefaultValue_On(ServiceType.NETWORK_FIREWALL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800146 }
147
148 @SmallTest
Kweku Adams4db6a3c2019-02-04 16:06:13 -0800149 public void testGetBatterySaverPolicy_PolicyNightMode_DefaultValueCorrect() {
150 testServiceDefaultValue_On(ServiceType.NIGHT_MODE);
151 }
152
153 @SmallTest
jackqdyulei29c82ab2017-03-10 14:09:16 -0800154 public void testGetBatterySaverPolicy_PolicyDataSaver_DefaultValueCorrect() {
Makoto Onuki66a78122017-11-14 15:03:21 -0800155 mBatterySaverPolicy.updateConstantsLocked("", "");
Kweku Adams9f488e22019-01-14 16:25:08 -0800156 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800157 final PowerSaveState batterySaverStateOn =
Kweku Adams9f488e22019-01-14 16:25:08 -0800158 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.DATA_SAVER);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800159 assertThat(batterySaverStateOn.batterySaverEnabled).isFalse();
160
Kweku Adams9f488e22019-01-14 16:25:08 -0800161 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_OFF);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800162 final PowerSaveState batterySaverStateOff = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800163 ServiceType.DATA_SAVER);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800164 assertThat(batterySaverStateOff.batterySaverEnabled).isFalse();
165 }
166
167 @SmallTest
jackqdyulei455e90a2017-02-09 15:29:16 -0800168 public void testGetBatterySaverPolicy_PolicyScreenBrightness_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700169 testServiceDefaultValue_Off(ServiceType.SCREEN_BRIGHTNESS);
jackqdyulei455e90a2017-02-09 15:29:16 -0800170 }
171
172 @SmallTest
173 public void testGetBatterySaverPolicy_PolicyGps_DefaultValueCorrect() {
Kweku Adams731a1032019-02-04 14:05:41 -0800174 testServiceDefaultValue_On(ServiceType.LOCATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800175
Kweku Adams9f488e22019-01-14 16:25:08 -0800176 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800177 PowerSaveState stateOn =
Kweku Adams731a1032019-02-04 14:05:41 -0800178 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.LOCATION);
179 assertThat(stateOn.locationMode).isEqualTo(DEFAULT_GPS_MODE);
jackqdyulei455e90a2017-02-09 15:29:16 -0800180 }
181
182 @SmallTest
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700183 public void testGetBatterySaverPolicy_PolicyQuickDoze_DefaultValueCorrect() {
Kweku Adams64cdc282018-12-11 16:17:24 -0800184 testServiceDefaultValue_On(ServiceType.QUICK_DOZE);
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700185 }
186
187 @SmallTest
jackqdyulei455e90a2017-02-09 15:29:16 -0800188 public void testUpdateConstants_getCorrectData() {
Makoto Onuki66a78122017-11-14 15:03:21 -0800189 mBatterySaverPolicy.updateConstantsLocked(BATTERY_SAVER_CONSTANTS, "");
jackqdyulei455e90a2017-02-09 15:29:16 -0800190
Kweku Adams9f488e22019-01-14 16:25:08 -0800191 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
192 verifyBatterySaverConstantsUpdated();
193 }
194
195 private void verifyBatterySaverConstantsUpdated() {
jackqdyulei455e90a2017-02-09 15:29:16 -0800196 final PowerSaveState vibrationState =
Kweku Adams9f488e22019-01-14 16:25:08 -0800197 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.VIBRATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800198 assertThat(vibrationState.batterySaverEnabled).isTrue();
199
200 final PowerSaveState animationState =
Kweku Adams9f488e22019-01-14 16:25:08 -0800201 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.ANIMATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800202 assertThat(animationState.batterySaverEnabled).isFalse();
203
204 final PowerSaveState soundState =
Kweku Adams9f488e22019-01-14 16:25:08 -0800205 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.SOUND);
jackqdyulei455e90a2017-02-09 15:29:16 -0800206 assertThat(soundState.batterySaverEnabled).isTrue();
207
208 final PowerSaveState networkState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800209 ServiceType.NETWORK_FIREWALL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800210 assertThat(networkState.batterySaverEnabled).isTrue();
211
212 final PowerSaveState screenState =
Kweku Adams9f488e22019-01-14 16:25:08 -0800213 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.SCREEN_BRIGHTNESS);
jackqdyulei455e90a2017-02-09 15:29:16 -0800214 assertThat(screenState.batterySaverEnabled).isFalse();
215 assertThat(screenState.brightnessFactor).isWithin(PRECISION).of(BRIGHTNESS_FACTOR);
216
217 final PowerSaveState fullBackupState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800218 ServiceType.FULL_BACKUP);
jackqdyulei455e90a2017-02-09 15:29:16 -0800219 assertThat(fullBackupState.batterySaverEnabled).isTrue();
220
221 final PowerSaveState keyValueBackupState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800222 ServiceType.KEYVALUE_BACKUP);
jackqdyulei455e90a2017-02-09 15:29:16 -0800223 assertThat(keyValueBackupState.batterySaverEnabled).isFalse();
224
jackqdyulei29c82ab2017-03-10 14:09:16 -0800225 final PowerSaveState dataSaverState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800226 ServiceType.DATA_SAVER);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800227 assertThat(dataSaverState.batterySaverEnabled).isTrue();
228
jackqdyulei455e90a2017-02-09 15:29:16 -0800229 final PowerSaveState gpsState =
Kweku Adams731a1032019-02-04 14:05:41 -0800230 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.LOCATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800231 assertThat(gpsState.batterySaverEnabled).isTrue();
Kweku Adams731a1032019-02-04 14:05:41 -0800232 assertThat(gpsState.locationMode).isEqualTo(GPS_MODE);
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700233
234 final PowerSaveState quickDozeState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800235 ServiceType.QUICK_DOZE);
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700236 assertThat(quickDozeState.batterySaverEnabled).isTrue();
jackqdyulei455e90a2017-02-09 15:29:16 -0800237 }
238
239 @SmallTest
240 public void testUpdateConstants_IncorrectData_NotCrash() {
241 //Should not crash
Makoto Onuki66a78122017-11-14 15:03:21 -0800242 mBatterySaverPolicy.updateConstantsLocked(BATTERY_SAVER_INCORRECT_CONSTANTS, "");
243 mBatterySaverPolicy.updateConstantsLocked(null, "");
jackqdyulei455e90a2017-02-09 15:29:16 -0800244 }
245
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700246 private void testServiceDefaultValue_On(@ServiceType int type) {
Makoto Onuki66a78122017-11-14 15:03:21 -0800247 mBatterySaverPolicy.updateConstantsLocked("", "");
Kweku Adams9f488e22019-01-14 16:25:08 -0800248 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800249 final PowerSaveState batterySaverStateOn =
Kweku Adams9f488e22019-01-14 16:25:08 -0800250 mBatterySaverPolicy.getBatterySaverPolicy(type);
jackqdyulei455e90a2017-02-09 15:29:16 -0800251 assertThat(batterySaverStateOn.batterySaverEnabled).isTrue();
252
Kweku Adams9f488e22019-01-14 16:25:08 -0800253 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_OFF);
jackqdyulei455e90a2017-02-09 15:29:16 -0800254 final PowerSaveState batterySaverStateOff =
Kweku Adams9f488e22019-01-14 16:25:08 -0800255 mBatterySaverPolicy.getBatterySaverPolicy(type);
jackqdyulei455e90a2017-02-09 15:29:16 -0800256 assertThat(batterySaverStateOff.batterySaverEnabled).isFalse();
257 }
Makoto Onuki66a78122017-11-14 15:03:21 -0800258
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700259 private void testServiceDefaultValue_Off(@ServiceType int type) {
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700260 mBatterySaverPolicy.updateConstantsLocked("", "");
Kweku Adams9f488e22019-01-14 16:25:08 -0800261 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700262 final PowerSaveState batterySaverStateOn =
Kweku Adams9f488e22019-01-14 16:25:08 -0800263 mBatterySaverPolicy.getBatterySaverPolicy(type);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700264 assertThat(batterySaverStateOn.batterySaverEnabled).isFalse();
265
Kweku Adams9f488e22019-01-14 16:25:08 -0800266 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_OFF);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700267 final PowerSaveState batterySaverStateOff =
Kweku Adams9f488e22019-01-14 16:25:08 -0800268 mBatterySaverPolicy.getBatterySaverPolicy(type);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700269 assertThat(batterySaverStateOff.batterySaverEnabled).isFalse();
270 }
271
Makoto Onuki66a78122017-11-14 15:03:21 -0800272 public void testDeviceSpecific() {
273 mDeviceSpecificConfigResId = R.string.config_batterySaverDeviceSpecificConfig_1;
274 mMockGlobalSettings.put(Global.BATTERY_SAVER_CONSTANTS, "");
275 mMockGlobalSettings.put(Global.BATTERY_SAVER_DEVICE_SPECIFIC_CONSTANTS, "");
276
Makoto Onuki3aaed292017-11-15 16:31:24 -0800277 mBatterySaverPolicy.onChange();
Makoto Onuki66a78122017-11-14 15:03:21 -0800278 assertThat(mBatterySaverPolicy.getFileValues(true).toString()).isEqualTo("{}");
279 assertThat(mBatterySaverPolicy.getFileValues(false).toString()).isEqualTo("{}");
280
281
282 mDeviceSpecificConfigResId = R.string.config_batterySaverDeviceSpecificConfig_2;
283
Makoto Onuki3aaed292017-11-15 16:31:24 -0800284 mBatterySaverPolicy.onChange();
Makoto Onuki66a78122017-11-14 15:03:21 -0800285 assertThat(mBatterySaverPolicy.getFileValues(true).toString()).isEqualTo("{}");
286 assertThat(mBatterySaverPolicy.getFileValues(false).toString())
Kweku Adams7fb72a42019-01-08 16:08:49 -0800287 .isEqualTo("{/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq=123, "
288 + "/sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq=456}");
Makoto Onuki66a78122017-11-14 15:03:21 -0800289
290 mDeviceSpecificConfigResId = R.string.config_batterySaverDeviceSpecificConfig_3;
291
Makoto Onuki3aaed292017-11-15 16:31:24 -0800292 mBatterySaverPolicy.onChange();
Makoto Onukice643a32017-11-20 14:31:06 -0800293 assertThat(mBatterySaverPolicy.getFileValues(true).toString())
Kweku Adams7fb72a42019-01-08 16:08:49 -0800294 .isEqualTo("{/sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq=333, "
295 + "/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq=444}");
Makoto Onukice643a32017-11-20 14:31:06 -0800296 assertThat(mBatterySaverPolicy.getFileValues(false).toString())
297 .isEqualTo("{/sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq=222}");
Makoto Onuki66a78122017-11-14 15:03:21 -0800298
299
300 mMockGlobalSettings.put(Global.BATTERY_SAVER_DEVICE_SPECIFIC_CONSTANTS,
Makoto Onukice643a32017-11-20 14:31:06 -0800301 "cpufreq-i=3:1234567890/4:014/5:015");
Makoto Onuki66a78122017-11-14 15:03:21 -0800302
Makoto Onuki3aaed292017-11-15 16:31:24 -0800303 mBatterySaverPolicy.onChange();
Makoto Onukice643a32017-11-20 14:31:06 -0800304 assertThat(mBatterySaverPolicy.getFileValues(true).toString())
Kweku Adams7fb72a42019-01-08 16:08:49 -0800305 .isEqualTo("{/sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq=1234567890, "
306 + "/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq=14, "
307 + "/sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq=15}");
Makoto Onuki66a78122017-11-14 15:03:21 -0800308 assertThat(mBatterySaverPolicy.getFileValues(false).toString()).isEqualTo("{}");
309 }
Kweku Adams9f488e22019-01-14 16:25:08 -0800310
311 public void testSetPolicyLevel_Off() {
312 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_OFF);
313
314 // +1 to make sure the default value is off as well.
315 for (int i = 0; i < MAX_SERVICE_TYPE + 1; ++i) {
316 assertThat(mBatterySaverPolicy.getBatterySaverPolicy(i).batterySaverEnabled).isFalse();
317 }
318 }
319
320 public void testSetPolicyLevel_Adaptive() {
321 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_ADAPTIVE);
322
323 mBatterySaverPolicy.setAdaptivePolicyLocked(BatterySaverPolicy.OFF_POLICY);
324 for (int i = 0; i < MAX_SERVICE_TYPE + 1; ++i) {
325 assertThat(mBatterySaverPolicy.getBatterySaverPolicy(i).batterySaverEnabled).isFalse();
326 }
327
328 mBatterySaverPolicy.setAdaptivePolicyLocked(
329 Policy.fromSettings(BATTERY_SAVER_CONSTANTS, ""));
330 verifyBatterySaverConstantsUpdated();
331 }
jackqdyulei455e90a2017-02-09 15:29:16 -0800332}