blob: 98cfc41ccfa8e288e77841fb9a4ddf2ca800fd67 [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 Adams44e62802019-03-04 17:16:02 -080061 + "enable_night_mode=false,"
Kweku Adamsb396ccf2018-09-17 16:37:15 -070062 + "quick_doze_enabled=true";
jackqdyulei455e90a2017-02-09 15:29:16 -080063 private static final String BATTERY_SAVER_INCORRECT_CONSTANTS = "vi*,!=,,true";
64
Makoto Onuki66a78122017-11-14 15:03:21 -080065 private class BatterySaverPolicyForTest extends BatterySaverPolicy {
Kweku Adams7fb72a42019-01-08 16:08:49 -080066 BatterySaverPolicyForTest(Object lock, Context context,
Makoto Onukibd7a6252018-05-10 13:41:39 -070067 BatterySavingStats batterySavingStats) {
68 super(lock, context, batterySavingStats);
Makoto Onuki66a78122017-11-14 15:03:21 -080069 }
70
71 @Override
72 String getGlobalSetting(String key) {
73 return mMockGlobalSettings.get(key);
74 }
75
76 @Override
77 int getDeviceSpecificConfigResId() {
78 return mDeviceSpecificConfigResId;
79 }
Makoto Onuki3aaed292017-11-15 16:31:24 -080080
Makoto Onuki3aaed292017-11-15 16:31:24 -080081 @VisibleForTesting
82 void onChange() {
83 onChange(true, null);
84 }
Makoto Onuki66a78122017-11-14 15:03:21 -080085 }
86
Makoto Onuki66a78122017-11-14 15:03:21 -080087 private BatterySaverPolicyForTest mBatterySaverPolicy;
88
89 private final ArrayMap<String, String> mMockGlobalSettings = new ArrayMap<>();
90 private int mDeviceSpecificConfigResId = R.string.config_batterySaverDeviceSpecificConfig_1;
jackqdyulei455e90a2017-02-09 15:29:16 -080091
92 public void setUp() throws Exception {
93 super.setUp();
94 MockitoAnnotations.initMocks(this);
Makoto Onukibd7a6252018-05-10 13:41:39 -070095 final Object lock = new Object();
96 mBatterySaverPolicy = new BatterySaverPolicyForTest(lock, getContext(),
Kweku Adams25b1c162019-01-31 13:44:50 -080097 new BatterySavingStats(lock));
Makoto Onukibd7a6252018-05-10 13:41:39 -070098 mBatterySaverPolicy.systemReady();
Kweku Adams9f488e22019-01-14 16:25:08 -080099
100 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800101 }
102
103 @SmallTest
104 public void testGetBatterySaverPolicy_PolicyNull_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700105 testServiceDefaultValue_On(ServiceType.NULL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800106 }
107
108 @SmallTest
109 public void testGetBatterySaverPolicy_PolicyVibration_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700110 testServiceDefaultValue_On(ServiceType.VIBRATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800111 }
112
113 @SmallTest
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700114 public void testGetBatterySaverPolicy_PolicyVibration_WithAccessibilityEnabled() {
Makoto Onukibd7a6252018-05-10 13:41:39 -0700115 mBatterySaverPolicy.setAccessibilityEnabledForTest(true);
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700116 testServiceDefaultValue_Off(ServiceType.VIBRATION);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700117 }
118
119 @SmallTest
jackqdyulei455e90a2017-02-09 15:29:16 -0800120 public void testGetBatterySaverPolicy_PolicySound_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700121 testServiceDefaultValue_On(ServiceType.SOUND);
jackqdyulei455e90a2017-02-09 15:29:16 -0800122 }
123
124 @SmallTest
125 public void testGetBatterySaverPolicy_PolicyFullBackup_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700126 testServiceDefaultValue_On(ServiceType.FULL_BACKUP);
jackqdyulei455e90a2017-02-09 15:29:16 -0800127 }
128
129 @SmallTest
130 public void testGetBatterySaverPolicy_PolicyKeyValueBackup_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700131 testServiceDefaultValue_On(ServiceType.KEYVALUE_BACKUP);
jackqdyulei455e90a2017-02-09 15:29:16 -0800132 }
133
134 @SmallTest
135 public void testGetBatterySaverPolicy_PolicyAnimation_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700136 testServiceDefaultValue_Off(ServiceType.ANIMATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800137 }
138
139 @SmallTest
140 public void testGetBatterySaverPolicy_PolicyBatteryStats_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700141 testServiceDefaultValue_On(ServiceType.BATTERY_STATS);
jackqdyulei455e90a2017-02-09 15:29:16 -0800142 }
143
144 @SmallTest
145 public void testGetBatterySaverPolicy_PolicyNetworkFirewall_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700146 testServiceDefaultValue_On(ServiceType.NETWORK_FIREWALL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800147 }
148
149 @SmallTest
Kweku Adams4db6a3c2019-02-04 16:06:13 -0800150 public void testGetBatterySaverPolicy_PolicyNightMode_DefaultValueCorrect() {
151 testServiceDefaultValue_On(ServiceType.NIGHT_MODE);
152 }
153
154 @SmallTest
jackqdyulei29c82ab2017-03-10 14:09:16 -0800155 public void testGetBatterySaverPolicy_PolicyDataSaver_DefaultValueCorrect() {
Makoto Onuki66a78122017-11-14 15:03:21 -0800156 mBatterySaverPolicy.updateConstantsLocked("", "");
Kweku Adams9f488e22019-01-14 16:25:08 -0800157 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800158 final PowerSaveState batterySaverStateOn =
Kweku Adams9f488e22019-01-14 16:25:08 -0800159 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.DATA_SAVER);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800160 assertThat(batterySaverStateOn.batterySaverEnabled).isFalse();
161
Kweku Adams9f488e22019-01-14 16:25:08 -0800162 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_OFF);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800163 final PowerSaveState batterySaverStateOff = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800164 ServiceType.DATA_SAVER);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800165 assertThat(batterySaverStateOff.batterySaverEnabled).isFalse();
166 }
167
168 @SmallTest
jackqdyulei455e90a2017-02-09 15:29:16 -0800169 public void testGetBatterySaverPolicy_PolicyScreenBrightness_DefaultValueCorrect() {
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700170 testServiceDefaultValue_Off(ServiceType.SCREEN_BRIGHTNESS);
jackqdyulei455e90a2017-02-09 15:29:16 -0800171 }
172
173 @SmallTest
174 public void testGetBatterySaverPolicy_PolicyGps_DefaultValueCorrect() {
Kweku Adams731a1032019-02-04 14:05:41 -0800175 testServiceDefaultValue_On(ServiceType.LOCATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800176
Kweku Adams9f488e22019-01-14 16:25:08 -0800177 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800178 PowerSaveState stateOn =
Kweku Adams731a1032019-02-04 14:05:41 -0800179 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.LOCATION);
180 assertThat(stateOn.locationMode).isEqualTo(DEFAULT_GPS_MODE);
jackqdyulei455e90a2017-02-09 15:29:16 -0800181 }
182
183 @SmallTest
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700184 public void testGetBatterySaverPolicy_PolicyQuickDoze_DefaultValueCorrect() {
Kweku Adams64cdc282018-12-11 16:17:24 -0800185 testServiceDefaultValue_On(ServiceType.QUICK_DOZE);
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700186 }
187
188 @SmallTest
jackqdyulei455e90a2017-02-09 15:29:16 -0800189 public void testUpdateConstants_getCorrectData() {
Makoto Onuki66a78122017-11-14 15:03:21 -0800190 mBatterySaverPolicy.updateConstantsLocked(BATTERY_SAVER_CONSTANTS, "");
jackqdyulei455e90a2017-02-09 15:29:16 -0800191
Kweku Adams9f488e22019-01-14 16:25:08 -0800192 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
193 verifyBatterySaverConstantsUpdated();
194 }
195
196 private void verifyBatterySaverConstantsUpdated() {
jackqdyulei455e90a2017-02-09 15:29:16 -0800197 final PowerSaveState vibrationState =
Kweku Adams9f488e22019-01-14 16:25:08 -0800198 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.VIBRATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800199 assertThat(vibrationState.batterySaverEnabled).isTrue();
200
201 final PowerSaveState animationState =
Kweku Adams9f488e22019-01-14 16:25:08 -0800202 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.ANIMATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800203 assertThat(animationState.batterySaverEnabled).isFalse();
204
205 final PowerSaveState soundState =
Kweku Adams9f488e22019-01-14 16:25:08 -0800206 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.SOUND);
jackqdyulei455e90a2017-02-09 15:29:16 -0800207 assertThat(soundState.batterySaverEnabled).isTrue();
208
209 final PowerSaveState networkState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800210 ServiceType.NETWORK_FIREWALL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800211 assertThat(networkState.batterySaverEnabled).isTrue();
212
213 final PowerSaveState screenState =
Kweku Adams9f488e22019-01-14 16:25:08 -0800214 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.SCREEN_BRIGHTNESS);
jackqdyulei455e90a2017-02-09 15:29:16 -0800215 assertThat(screenState.batterySaverEnabled).isFalse();
216 assertThat(screenState.brightnessFactor).isWithin(PRECISION).of(BRIGHTNESS_FACTOR);
217
218 final PowerSaveState fullBackupState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800219 ServiceType.FULL_BACKUP);
jackqdyulei455e90a2017-02-09 15:29:16 -0800220 assertThat(fullBackupState.batterySaverEnabled).isTrue();
221
222 final PowerSaveState keyValueBackupState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800223 ServiceType.KEYVALUE_BACKUP);
jackqdyulei455e90a2017-02-09 15:29:16 -0800224 assertThat(keyValueBackupState.batterySaverEnabled).isFalse();
225
jackqdyulei29c82ab2017-03-10 14:09:16 -0800226 final PowerSaveState dataSaverState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800227 ServiceType.DATA_SAVER);
jackqdyulei29c82ab2017-03-10 14:09:16 -0800228 assertThat(dataSaverState.batterySaverEnabled).isTrue();
229
jackqdyulei455e90a2017-02-09 15:29:16 -0800230 final PowerSaveState gpsState =
Kweku Adams731a1032019-02-04 14:05:41 -0800231 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.LOCATION);
jackqdyulei455e90a2017-02-09 15:29:16 -0800232 assertThat(gpsState.batterySaverEnabled).isTrue();
Kweku Adams731a1032019-02-04 14:05:41 -0800233 assertThat(gpsState.locationMode).isEqualTo(GPS_MODE);
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700234
235 final PowerSaveState quickDozeState = mBatterySaverPolicy.getBatterySaverPolicy(
Kweku Adams9f488e22019-01-14 16:25:08 -0800236 ServiceType.QUICK_DOZE);
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700237 assertThat(quickDozeState.batterySaverEnabled).isTrue();
Kweku Adams44e62802019-03-04 17:16:02 -0800238
239 final PowerSaveState nightModeState = mBatterySaverPolicy.getBatterySaverPolicy(
240 ServiceType.NIGHT_MODE);
241 assertThat(nightModeState.batterySaverEnabled).isFalse();
jackqdyulei455e90a2017-02-09 15:29:16 -0800242 }
243
244 @SmallTest
245 public void testUpdateConstants_IncorrectData_NotCrash() {
246 //Should not crash
Makoto Onuki66a78122017-11-14 15:03:21 -0800247 mBatterySaverPolicy.updateConstantsLocked(BATTERY_SAVER_INCORRECT_CONSTANTS, "");
248 mBatterySaverPolicy.updateConstantsLocked(null, "");
jackqdyulei455e90a2017-02-09 15:29:16 -0800249 }
250
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700251 private void testServiceDefaultValue_On(@ServiceType int type) {
Makoto Onuki66a78122017-11-14 15:03:21 -0800252 mBatterySaverPolicy.updateConstantsLocked("", "");
Kweku Adams9f488e22019-01-14 16:25:08 -0800253 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
jackqdyulei455e90a2017-02-09 15:29:16 -0800254 final PowerSaveState batterySaverStateOn =
Kweku Adams9f488e22019-01-14 16:25:08 -0800255 mBatterySaverPolicy.getBatterySaverPolicy(type);
jackqdyulei455e90a2017-02-09 15:29:16 -0800256 assertThat(batterySaverStateOn.batterySaverEnabled).isTrue();
257
Kweku Adams9f488e22019-01-14 16:25:08 -0800258 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_OFF);
jackqdyulei455e90a2017-02-09 15:29:16 -0800259 final PowerSaveState batterySaverStateOff =
Kweku Adams9f488e22019-01-14 16:25:08 -0800260 mBatterySaverPolicy.getBatterySaverPolicy(type);
jackqdyulei455e90a2017-02-09 15:29:16 -0800261 assertThat(batterySaverStateOff.batterySaverEnabled).isFalse();
262 }
Makoto Onuki66a78122017-11-14 15:03:21 -0800263
Kweku Adamsb396ccf2018-09-17 16:37:15 -0700264 private void testServiceDefaultValue_Off(@ServiceType int type) {
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700265 mBatterySaverPolicy.updateConstantsLocked("", "");
Kweku Adams9f488e22019-01-14 16:25:08 -0800266 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_FULL);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700267 final PowerSaveState batterySaverStateOn =
Kweku Adams9f488e22019-01-14 16:25:08 -0800268 mBatterySaverPolicy.getBatterySaverPolicy(type);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700269 assertThat(batterySaverStateOn.batterySaverEnabled).isFalse();
270
Kweku Adams9f488e22019-01-14 16:25:08 -0800271 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_OFF);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700272 final PowerSaveState batterySaverStateOff =
Kweku Adams9f488e22019-01-14 16:25:08 -0800273 mBatterySaverPolicy.getBatterySaverPolicy(type);
Makoto Onukia3e0e0c2018-05-08 12:59:09 -0700274 assertThat(batterySaverStateOff.batterySaverEnabled).isFalse();
275 }
276
Makoto Onuki66a78122017-11-14 15:03:21 -0800277 public void testDeviceSpecific() {
278 mDeviceSpecificConfigResId = R.string.config_batterySaverDeviceSpecificConfig_1;
279 mMockGlobalSettings.put(Global.BATTERY_SAVER_CONSTANTS, "");
280 mMockGlobalSettings.put(Global.BATTERY_SAVER_DEVICE_SPECIFIC_CONSTANTS, "");
281
Makoto Onuki3aaed292017-11-15 16:31:24 -0800282 mBatterySaverPolicy.onChange();
Makoto Onuki66a78122017-11-14 15:03:21 -0800283 assertThat(mBatterySaverPolicy.getFileValues(true).toString()).isEqualTo("{}");
284 assertThat(mBatterySaverPolicy.getFileValues(false).toString()).isEqualTo("{}");
285
286
287 mDeviceSpecificConfigResId = R.string.config_batterySaverDeviceSpecificConfig_2;
288
Makoto Onuki3aaed292017-11-15 16:31:24 -0800289 mBatterySaverPolicy.onChange();
Makoto Onuki66a78122017-11-14 15:03:21 -0800290 assertThat(mBatterySaverPolicy.getFileValues(true).toString()).isEqualTo("{}");
291 assertThat(mBatterySaverPolicy.getFileValues(false).toString())
Kweku Adams7fb72a42019-01-08 16:08:49 -0800292 .isEqualTo("{/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq=123, "
293 + "/sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq=456}");
Makoto Onuki66a78122017-11-14 15:03:21 -0800294
295 mDeviceSpecificConfigResId = R.string.config_batterySaverDeviceSpecificConfig_3;
296
Makoto Onuki3aaed292017-11-15 16:31:24 -0800297 mBatterySaverPolicy.onChange();
Makoto Onukice643a32017-11-20 14:31:06 -0800298 assertThat(mBatterySaverPolicy.getFileValues(true).toString())
Kweku Adams7fb72a42019-01-08 16:08:49 -0800299 .isEqualTo("{/sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq=333, "
300 + "/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq=444}");
Makoto Onukice643a32017-11-20 14:31:06 -0800301 assertThat(mBatterySaverPolicy.getFileValues(false).toString())
302 .isEqualTo("{/sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq=222}");
Makoto Onuki66a78122017-11-14 15:03:21 -0800303
304
305 mMockGlobalSettings.put(Global.BATTERY_SAVER_DEVICE_SPECIFIC_CONSTANTS,
Makoto Onukice643a32017-11-20 14:31:06 -0800306 "cpufreq-i=3:1234567890/4:014/5:015");
Makoto Onuki66a78122017-11-14 15:03:21 -0800307
Makoto Onuki3aaed292017-11-15 16:31:24 -0800308 mBatterySaverPolicy.onChange();
Makoto Onukice643a32017-11-20 14:31:06 -0800309 assertThat(mBatterySaverPolicy.getFileValues(true).toString())
Kweku Adams7fb72a42019-01-08 16:08:49 -0800310 .isEqualTo("{/sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq=1234567890, "
311 + "/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq=14, "
312 + "/sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq=15}");
Makoto Onuki66a78122017-11-14 15:03:21 -0800313 assertThat(mBatterySaverPolicy.getFileValues(false).toString()).isEqualTo("{}");
314 }
Kweku Adams9f488e22019-01-14 16:25:08 -0800315
316 public void testSetPolicyLevel_Off() {
317 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_OFF);
318
319 // +1 to make sure the default value is off as well.
320 for (int i = 0; i < MAX_SERVICE_TYPE + 1; ++i) {
321 assertThat(mBatterySaverPolicy.getBatterySaverPolicy(i).batterySaverEnabled).isFalse();
322 }
323 }
324
325 public void testSetPolicyLevel_Adaptive() {
326 mBatterySaverPolicy.setPolicyLevel(POLICY_LEVEL_ADAPTIVE);
327
328 mBatterySaverPolicy.setAdaptivePolicyLocked(BatterySaverPolicy.OFF_POLICY);
329 for (int i = 0; i < MAX_SERVICE_TYPE + 1; ++i) {
330 assertThat(mBatterySaverPolicy.getBatterySaverPolicy(i).batterySaverEnabled).isFalse();
331 }
332
333 mBatterySaverPolicy.setAdaptivePolicyLocked(
334 Policy.fromSettings(BATTERY_SAVER_CONSTANTS, ""));
335 verifyBatterySaverConstantsUpdated();
336 }
jackqdyulei455e90a2017-02-09 15:29:16 -0800337}