Merge "Give the wellbeing package a higher min balance." into udc-dev
This commit is contained in:
@@ -38,6 +38,7 @@ import static android.app.tare.EconomyManager.DEFAULT_AM_MAX_CONSUMPTION_LIMIT_C
|
|||||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_CONSUMPTION_LIMIT_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_CONSUMPTION_LIMIT_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES;
|
||||||
|
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_MAX_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_AM_REWARD_NOTIFICATION_INTERACTION_MAX_CAKES;
|
||||||
@@ -77,6 +78,7 @@ import static android.app.tare.EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT;
|
|||||||
import static android.app.tare.EconomyManager.KEY_AM_MAX_SATIATED_BALANCE;
|
import static android.app.tare.EconomyManager.KEY_AM_MAX_SATIATED_BALANCE;
|
||||||
import static android.app.tare.EconomyManager.KEY_AM_MIN_CONSUMPTION_LIMIT;
|
import static android.app.tare.EconomyManager.KEY_AM_MIN_CONSUMPTION_LIMIT;
|
||||||
import static android.app.tare.EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED;
|
import static android.app.tare.EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED;
|
||||||
|
import static android.app.tare.EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP;
|
||||||
import static android.app.tare.EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP;
|
import static android.app.tare.EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP;
|
||||||
import static android.app.tare.EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT;
|
import static android.app.tare.EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT;
|
||||||
import static android.app.tare.EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_MAX;
|
import static android.app.tare.EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_MAX;
|
||||||
@@ -145,6 +147,7 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
|||||||
};
|
};
|
||||||
|
|
||||||
private long mMinSatiatedBalanceExempted;
|
private long mMinSatiatedBalanceExempted;
|
||||||
|
private long mMinSatiatedBalanceHeadlessSystemApp;
|
||||||
private long mMinSatiatedBalanceOther;
|
private long mMinSatiatedBalanceOther;
|
||||||
private long mMaxSatiatedBalance;
|
private long mMaxSatiatedBalance;
|
||||||
private long mInitialSatiatedConsumptionLimit;
|
private long mInitialSatiatedConsumptionLimit;
|
||||||
@@ -179,6 +182,9 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
|||||||
if (mIrs.isPackageExempted(userId, pkgName)) {
|
if (mIrs.isPackageExempted(userId, pkgName)) {
|
||||||
return mMinSatiatedBalanceExempted;
|
return mMinSatiatedBalanceExempted;
|
||||||
}
|
}
|
||||||
|
if (mIrs.isHeadlessSystemApp(pkgName)) {
|
||||||
|
return mMinSatiatedBalanceHeadlessSystemApp;
|
||||||
|
}
|
||||||
// TODO: take other exemptions into account
|
// TODO: take other exemptions into account
|
||||||
return mMinSatiatedBalanceOther;
|
return mMinSatiatedBalanceOther;
|
||||||
}
|
}
|
||||||
@@ -242,9 +248,14 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
|||||||
|
|
||||||
mMinSatiatedBalanceOther = getConstantAsCake(mParser, properties,
|
mMinSatiatedBalanceOther = getConstantAsCake(mParser, properties,
|
||||||
KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES);
|
KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES);
|
||||||
|
mMinSatiatedBalanceHeadlessSystemApp = getConstantAsCake(mParser, properties,
|
||||||
|
KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
DEFAULT_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES,
|
||||||
|
mMinSatiatedBalanceOther);
|
||||||
mMinSatiatedBalanceExempted = getConstantAsCake(mParser, properties,
|
mMinSatiatedBalanceExempted = getConstantAsCake(mParser, properties,
|
||||||
KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED,
|
||||||
mMinSatiatedBalanceOther);
|
DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
||||||
|
mMinSatiatedBalanceHeadlessSystemApp);
|
||||||
mMaxSatiatedBalance = getConstantAsCake(mParser, properties,
|
mMaxSatiatedBalance = getConstantAsCake(mParser, properties,
|
||||||
KEY_AM_MAX_SATIATED_BALANCE, DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
KEY_AM_MAX_SATIATED_BALANCE, DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||||
Math.max(arcToCake(1), mMinSatiatedBalanceExempted));
|
Math.max(arcToCake(1), mMinSatiatedBalanceExempted));
|
||||||
|
|||||||
@@ -205,6 +205,11 @@ public class InternalResourceService extends SystemService {
|
|||||||
@GuardedBy("mLock")
|
@GuardedBy("mLock")
|
||||||
private final SparseArrayMap<String, ArraySet<String>> mInstallers = new SparseArrayMap<>();
|
private final SparseArrayMap<String, ArraySet<String>> mInstallers = new SparseArrayMap<>();
|
||||||
|
|
||||||
|
/** The package name of the wellbeing app. */
|
||||||
|
@GuardedBy("mLock")
|
||||||
|
@Nullable
|
||||||
|
private String mWellbeingPackage;
|
||||||
|
|
||||||
private volatile boolean mHasBattery = true;
|
private volatile boolean mHasBattery = true;
|
||||||
@EconomyManager.EnabledMode
|
@EconomyManager.EnabledMode
|
||||||
private volatile int mEnabledMode;
|
private volatile int mEnabledMode;
|
||||||
@@ -496,6 +501,20 @@ public class InternalResourceService extends SystemService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isHeadlessSystemApp(@NonNull String pkgName) {
|
||||||
|
if (pkgName == null) {
|
||||||
|
Slog.wtfStack(TAG, "isHeadlessSystemApp called with null package");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
synchronized (mLock) {
|
||||||
|
// The wellbeing app is pre-set on the device, not expected to be interacted with
|
||||||
|
// much by the user, but can be expected to do work in the background on behalf of
|
||||||
|
// the user. As such, it's a pseudo-headless system app, so treat it as a headless
|
||||||
|
// system app.
|
||||||
|
return pkgName.equals(mWellbeingPackage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
boolean isPackageExempted(final int userId, @NonNull String pkgName) {
|
boolean isPackageExempted(final int userId, @NonNull String pkgName) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
return mExemptedApps.contains(pkgName);
|
return mExemptedApps.contains(pkgName);
|
||||||
@@ -1097,6 +1116,9 @@ public class InternalResourceService extends SystemService {
|
|||||||
}
|
}
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
registerListeners();
|
registerListeners();
|
||||||
|
// As of Android UDC, users can't change the wellbeing package, so load it once
|
||||||
|
// as soon as possible and don't bother trying to update it afterwards.
|
||||||
|
mWellbeingPackage = mPackageManager.getWellbeingPackageName();
|
||||||
mCurrentBatteryLevel = getCurrentBatteryLevel();
|
mCurrentBatteryLevel = getCurrentBatteryLevel();
|
||||||
// Get the current battery presence, if available. This would succeed if TARE is
|
// Get the current battery presence, if available. This would succeed if TARE is
|
||||||
// toggled long after boot.
|
// toggled long after boot.
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import static android.app.tare.EconomyManager.DEFAULT_JS_MAX_CONSUMPTION_LIMIT_C
|
|||||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_CONSUMPTION_LIMIT_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_CONSUMPTION_LIMIT_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED_CAKES;
|
||||||
|
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP_CAKES;
|
||||||
import static android.app.tare.EconomyManager.DEFAULT_JS_REWARD_APP_INSTALL_INSTANT_CAKES;
|
import static android.app.tare.EconomyManager.DEFAULT_JS_REWARD_APP_INSTALL_INSTANT_CAKES;
|
||||||
@@ -90,6 +91,7 @@ import static android.app.tare.EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT;
|
|||||||
import static android.app.tare.EconomyManager.KEY_JS_MAX_SATIATED_BALANCE;
|
import static android.app.tare.EconomyManager.KEY_JS_MAX_SATIATED_BALANCE;
|
||||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_CONSUMPTION_LIMIT;
|
import static android.app.tare.EconomyManager.KEY_JS_MIN_CONSUMPTION_LIMIT;
|
||||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED;
|
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED;
|
||||||
|
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP;
|
||||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER;
|
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER;
|
||||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP;
|
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP;
|
||||||
import static android.app.tare.EconomyManager.KEY_JS_REWARD_APP_INSTALL_INSTANT;
|
import static android.app.tare.EconomyManager.KEY_JS_REWARD_APP_INSTALL_INSTANT;
|
||||||
@@ -158,6 +160,7 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
|||||||
};
|
};
|
||||||
|
|
||||||
private long mMinSatiatedBalanceExempted;
|
private long mMinSatiatedBalanceExempted;
|
||||||
|
private long mMinSatiatedBalanceHeadlessSystemApp;
|
||||||
private long mMinSatiatedBalanceOther;
|
private long mMinSatiatedBalanceOther;
|
||||||
private long mMinSatiatedBalanceIncrementalAppUpdater;
|
private long mMinSatiatedBalanceIncrementalAppUpdater;
|
||||||
private long mMaxSatiatedBalance;
|
private long mMaxSatiatedBalance;
|
||||||
@@ -194,6 +197,8 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
|||||||
final long baseBalance;
|
final long baseBalance;
|
||||||
if (mIrs.isPackageExempted(userId, pkgName)) {
|
if (mIrs.isPackageExempted(userId, pkgName)) {
|
||||||
baseBalance = mMinSatiatedBalanceExempted;
|
baseBalance = mMinSatiatedBalanceExempted;
|
||||||
|
} else if (mIrs.isHeadlessSystemApp(pkgName)) {
|
||||||
|
baseBalance = mMinSatiatedBalanceHeadlessSystemApp;
|
||||||
} else {
|
} else {
|
||||||
baseBalance = mMinSatiatedBalanceOther;
|
baseBalance = mMinSatiatedBalanceOther;
|
||||||
}
|
}
|
||||||
@@ -276,9 +281,14 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
|||||||
|
|
||||||
mMinSatiatedBalanceOther = getConstantAsCake(mParser, properties,
|
mMinSatiatedBalanceOther = getConstantAsCake(mParser, properties,
|
||||||
KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP_CAKES);
|
KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP_CAKES);
|
||||||
|
mMinSatiatedBalanceHeadlessSystemApp = getConstantAsCake(mParser, properties,
|
||||||
|
KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
DEFAULT_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES,
|
||||||
|
mMinSatiatedBalanceOther);
|
||||||
mMinSatiatedBalanceExempted = getConstantAsCake(mParser, properties,
|
mMinSatiatedBalanceExempted = getConstantAsCake(mParser, properties,
|
||||||
KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED,
|
||||||
mMinSatiatedBalanceOther);
|
DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
||||||
|
mMinSatiatedBalanceHeadlessSystemApp);
|
||||||
mMinSatiatedBalanceIncrementalAppUpdater = getConstantAsCake(mParser, properties,
|
mMinSatiatedBalanceIncrementalAppUpdater = getConstantAsCake(mParser, properties,
|
||||||
KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER,
|
KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER,
|
||||||
DEFAULT_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER_CAKES);
|
DEFAULT_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER_CAKES);
|
||||||
|
|||||||
@@ -136,17 +136,30 @@ public class AlarmManagerEconomicPolicyTest {
|
|||||||
mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||||
assertEquals(EconomyManager.DEFAULT_AM_MAX_CONSUMPTION_LIMIT_CAKES,
|
assertEquals(EconomyManager.DEFAULT_AM_MAX_CONSUMPTION_LIMIT_CAKES,
|
||||||
mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||||
|
|
||||||
final String pkgRestricted = "com.pkg.restricted";
|
final String pkgRestricted = "com.pkg.restricted";
|
||||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||||
|
assertEquals(0, mEconomicPolicy.getMinSatiatedBalance(0, pkgRestricted));
|
||||||
assertEquals(0, mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
assertEquals(0, mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||||
assertEquals(EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
|
||||||
mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
|
||||||
final String pkgExempted = "com.pkg.exempted";
|
final String pkgExempted = "com.pkg.exempted";
|
||||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||||
assertEquals(EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
assertEquals(EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_EXEMPTED_CAKES,
|
||||||
mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||||
|
assertEquals(EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||||
|
mEconomicPolicy.getMaxSatiatedBalance(0, pkgExempted));
|
||||||
|
|
||||||
|
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||||
|
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||||
|
assertEquals(EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES,
|
||||||
|
mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
|
assertEquals(EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||||
|
mEconomicPolicy.getMaxSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
|
|
||||||
assertEquals(EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES,
|
assertEquals(EconomyManager.DEFAULT_AM_MIN_SATIATED_BALANCE_OTHER_APP_CAKES,
|
||||||
mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||||
|
assertEquals(EconomyManager.DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||||
|
mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -156,6 +169,8 @@ public class AlarmManagerEconomicPolicyTest {
|
|||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(25));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(25));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(10));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(10));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(9));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(9));
|
||||||
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
arcToCake(8));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(7));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(7));
|
||||||
|
|
||||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||||
@@ -168,6 +183,9 @@ public class AlarmManagerEconomicPolicyTest {
|
|||||||
final String pkgExempted = "com.pkg.exempted";
|
final String pkgExempted = "com.pkg.exempted";
|
||||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||||
assertEquals(arcToCake(9), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
assertEquals(arcToCake(9), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||||
|
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||||
|
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||||
|
assertEquals(arcToCake(8), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
assertEquals(arcToCake(7), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
assertEquals(arcToCake(7), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,6 +197,8 @@ public class AlarmManagerEconomicPolicyTest {
|
|||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(-5));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(-5));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(-1));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(-1));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(-2));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(-2));
|
||||||
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
arcToCake(-3));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(-3));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(-3));
|
||||||
|
|
||||||
assertEquals(arcToCake(1), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
assertEquals(arcToCake(1), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||||
@@ -191,6 +211,9 @@ public class AlarmManagerEconomicPolicyTest {
|
|||||||
final String pkgExempted = "com.pkg.exempted";
|
final String pkgExempted = "com.pkg.exempted";
|
||||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||||
|
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||||
|
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||||
|
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||||
|
|
||||||
// Test min+max reversed.
|
// Test min+max reversed.
|
||||||
@@ -199,6 +222,8 @@ public class AlarmManagerEconomicPolicyTest {
|
|||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(3));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(3));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(10));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(10));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(11));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(11));
|
||||||
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
arcToCake(12));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(13));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(13));
|
||||||
|
|
||||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||||
@@ -207,6 +232,7 @@ public class AlarmManagerEconomicPolicyTest {
|
|||||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||||
assertEquals(arcToCake(13), mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
assertEquals(arcToCake(13), mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
||||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||||
|
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -189,6 +189,10 @@ public class CompleteEconomicPolicyTest {
|
|||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(11));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(11));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(8));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(8));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(5));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(5));
|
||||||
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
arcToCake(6));
|
||||||
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
arcToCake(4));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(3));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(3));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(2));
|
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(2));
|
||||||
|
|
||||||
@@ -202,6 +206,9 @@ public class CompleteEconomicPolicyTest {
|
|||||||
final String pkgExempted = "com.pkg.exempted";
|
final String pkgExempted = "com.pkg.exempted";
|
||||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||||
|
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||||
|
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||||
|
assertEquals(arcToCake(10), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
assertEquals(arcToCake(5), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
assertEquals(arcToCake(5), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -149,6 +149,13 @@ public class JobSchedulerEconomicPolicyTest {
|
|||||||
assertEquals(EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES,
|
assertEquals(EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES,
|
||||||
mEconomicPolicy.getMaxSatiatedBalance(0, pkgExempted));
|
mEconomicPolicy.getMaxSatiatedBalance(0, pkgExempted));
|
||||||
|
|
||||||
|
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||||
|
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||||
|
assertEquals(EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP_CAKES,
|
||||||
|
mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
|
assertEquals(EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES,
|
||||||
|
mEconomicPolicy.getMaxSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
|
|
||||||
final String pkgUpdater = "com.pkg.updater";
|
final String pkgUpdater = "com.pkg.updater";
|
||||||
when(mIrs.getAppUpdateResponsibilityCount(anyInt(), eq(pkgUpdater))).thenReturn(5);
|
when(mIrs.getAppUpdateResponsibilityCount(anyInt(), eq(pkgUpdater))).thenReturn(5);
|
||||||
assertEquals(5 * EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER_CAKES
|
assertEquals(5 * EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER_CAKES
|
||||||
@@ -177,6 +184,8 @@ public class JobSchedulerEconomicPolicyTest {
|
|||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(25));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(25));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(10));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(10));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(6));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(6));
|
||||||
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
arcToCake(5));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(4));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(4));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER,
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER,
|
||||||
arcToCake(1));
|
arcToCake(1));
|
||||||
@@ -191,6 +200,9 @@ public class JobSchedulerEconomicPolicyTest {
|
|||||||
final String pkgExempted = "com.pkg.exempted";
|
final String pkgExempted = "com.pkg.exempted";
|
||||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||||
assertEquals(arcToCake(6), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
assertEquals(arcToCake(6), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||||
|
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||||
|
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||||
|
assertEquals(arcToCake(5), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
assertEquals(arcToCake(4), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
assertEquals(arcToCake(4), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||||
final String pkgUpdater = "com.pkg.updater";
|
final String pkgUpdater = "com.pkg.updater";
|
||||||
when(mIrs.getAppUpdateResponsibilityCount(anyInt(), eq(pkgUpdater))).thenReturn(3);
|
when(mIrs.getAppUpdateResponsibilityCount(anyInt(), eq(pkgUpdater))).thenReturn(3);
|
||||||
@@ -206,6 +218,8 @@ public class JobSchedulerEconomicPolicyTest {
|
|||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(-5));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(-5));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(-1));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(-1));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(-2));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(-2));
|
||||||
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
arcToCake(-3));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(-3));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(-3));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER,
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_INCREMENT_APP_UPDATER,
|
||||||
arcToCake(-4));
|
arcToCake(-4));
|
||||||
@@ -220,6 +234,9 @@ public class JobSchedulerEconomicPolicyTest {
|
|||||||
final String pkgExempted = "com.pkg.exempted";
|
final String pkgExempted = "com.pkg.exempted";
|
||||||
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
when(mIrs.isPackageExempted(anyInt(), eq(pkgExempted))).thenReturn(true);
|
||||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||||
|
final String pkgHeadlessSystemApp = "com.pkg.headless_system_app";
|
||||||
|
when(mIrs.isHeadlessSystemApp(eq(pkgHeadlessSystemApp))).thenReturn(true);
|
||||||
|
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||||
final String pkgUpdater = "com.pkg.updater";
|
final String pkgUpdater = "com.pkg.updater";
|
||||||
when(mIrs.getAppUpdateResponsibilityCount(anyInt(), eq(pkgUpdater))).thenReturn(5);
|
when(mIrs.getAppUpdateResponsibilityCount(anyInt(), eq(pkgUpdater))).thenReturn(5);
|
||||||
@@ -232,6 +249,8 @@ public class JobSchedulerEconomicPolicyTest {
|
|||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(3));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(3));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(10));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(10));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(11));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(11));
|
||||||
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
arcToCake(12));
|
||||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(13));
|
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(13));
|
||||||
|
|
||||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||||
@@ -240,6 +259,7 @@ public class JobSchedulerEconomicPolicyTest {
|
|||||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||||
assertEquals(arcToCake(13), mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
assertEquals(arcToCake(13), mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
||||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||||
|
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgHeadlessSystemApp));
|
||||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user