Merge "Separate minimum from initial consumption limit."
This commit is contained in:
@@ -113,7 +113,9 @@ public class EconomyManager {
|
||||
/** @hide */
|
||||
public static final String KEY_AM_INITIAL_CONSUMPTION_LIMIT = "am_initial_consumption_limit";
|
||||
/** @hide */
|
||||
public static final String KEY_AM_HARD_CONSUMPTION_LIMIT = "am_hard_consumption_limit";
|
||||
public static final String KEY_AM_MIN_CONSUMPTION_LIMIT = "am_minimum_consumption_limit";
|
||||
/** @hide */
|
||||
public static final String KEY_AM_MAX_CONSUMPTION_LIMIT = "am_maximum_consumption_limit";
|
||||
// TODO: Add AlarmManager modifier keys
|
||||
/** @hide */
|
||||
public static final String KEY_AM_REWARD_TOP_ACTIVITY_INSTANT =
|
||||
@@ -242,7 +244,9 @@ public class EconomyManager {
|
||||
/** @hide */
|
||||
public static final String KEY_JS_INITIAL_CONSUMPTION_LIMIT = "js_initial_consumption_limit";
|
||||
/** @hide */
|
||||
public static final String KEY_JS_HARD_CONSUMPTION_LIMIT = "js_hard_consumption_limit";
|
||||
public static final String KEY_JS_MIN_CONSUMPTION_LIMIT = "js_minimum_consumption_limit";
|
||||
/** @hide */
|
||||
public static final String KEY_JS_MAX_CONSUMPTION_LIMIT = "js_maximum_consumption_limit";
|
||||
// TODO: Add JobScheduler modifier keys
|
||||
/** @hide */
|
||||
public static final String KEY_JS_REWARD_APP_INSTALL_INSTANT =
|
||||
@@ -371,7 +375,9 @@ public class EconomyManager {
|
||||
/** @hide */
|
||||
public static final long DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT_CAKES = arcToCake(2880);
|
||||
/** @hide */
|
||||
public static final long DEFAULT_AM_HARD_CONSUMPTION_LIMIT_CAKES = arcToCake(15_000);
|
||||
public static final long DEFAULT_AM_MIN_CONSUMPTION_LIMIT_CAKES = arcToCake(1440);
|
||||
/** @hide */
|
||||
public static final long DEFAULT_AM_MAX_CONSUMPTION_LIMIT_CAKES = arcToCake(15_000);
|
||||
// TODO: add AlarmManager modifier default values
|
||||
/** @hide */
|
||||
public static final long DEFAULT_AM_REWARD_TOP_ACTIVITY_INSTANT_CAKES = arcToCake(0);
|
||||
@@ -478,8 +484,10 @@ public class EconomyManager {
|
||||
/** @hide */
|
||||
public static final long DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT_CAKES = arcToCake(29_000);
|
||||
/** @hide */
|
||||
// TODO: set hard limit based on device type (phone vs tablet vs etc) + battery size
|
||||
public static final long DEFAULT_JS_HARD_CONSUMPTION_LIMIT_CAKES = arcToCake(250_000);
|
||||
public static final long DEFAULT_JS_MIN_CONSUMPTION_LIMIT_CAKES = arcToCake(17_000);
|
||||
/** @hide */
|
||||
// TODO: set maximum limit based on device type (phone vs tablet vs etc) + battery size
|
||||
public static final long DEFAULT_JS_MAX_CONSUMPTION_LIMIT_CAKES = arcToCake(250_000);
|
||||
// TODO: add JobScheduler modifier default values
|
||||
/** @hide */
|
||||
public static final long DEFAULT_JS_REWARD_APP_INSTALL_INSTANT_CAKES = arcToCake(408);
|
||||
|
||||
@@ -33,9 +33,10 @@ import static android.app.tare.EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_NO
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_WAKEUP_BASE_PRICE_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_HARD_CONSUMPTION_LIMIT_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_AM_MAX_CONSUMPTION_LIMIT_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_SATIATED_BALANCE_EXEMPTED_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;
|
||||
@@ -71,9 +72,10 @@ import static android.app.tare.EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_NONWAK
|
||||
import static android.app.tare.EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_NONWAKEUP_CTP;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_BASE_PRICE;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_ACTION_ALARM_INEXACT_WAKEUP_CTP;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_HARD_CONSUMPTION_LIMIT;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_INITIAL_CONSUMPTION_LIMIT;
|
||||
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_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_OTHER_APP;
|
||||
import static android.app.tare.EconomyManager.KEY_AM_REWARD_NOTIFICATION_INTERACTION_INSTANT;
|
||||
@@ -146,7 +148,8 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
||||
private long mMinSatiatedBalanceOther;
|
||||
private long mMaxSatiatedBalance;
|
||||
private long mInitialSatiatedConsumptionLimit;
|
||||
private long mHardSatiatedConsumptionLimit;
|
||||
private long mMinSatiatedConsumptionLimit;
|
||||
private long mMaxSatiatedConsumptionLimit;
|
||||
|
||||
private final KeyValueListParser mParser = new KeyValueListParser(',');
|
||||
private final Injector mInjector;
|
||||
@@ -199,8 +202,13 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
||||
}
|
||||
|
||||
@Override
|
||||
long getHardSatiatedConsumptionLimit() {
|
||||
return mHardSatiatedConsumptionLimit;
|
||||
long getMinSatiatedConsumptionLimit() {
|
||||
return mMinSatiatedConsumptionLimit;
|
||||
}
|
||||
|
||||
@Override
|
||||
long getMaxSatiatedConsumptionLimit() {
|
||||
return mMaxSatiatedConsumptionLimit;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -240,12 +248,15 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
||||
mMaxSatiatedBalance = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_MAX_SATIATED_BALANCE, DEFAULT_AM_MAX_SATIATED_BALANCE_CAKES,
|
||||
Math.max(arcToCake(1), mMinSatiatedBalanceExempted));
|
||||
mMinSatiatedConsumptionLimit = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_MIN_CONSUMPTION_LIMIT, DEFAULT_AM_MIN_CONSUMPTION_LIMIT_CAKES,
|
||||
arcToCake(1));
|
||||
mInitialSatiatedConsumptionLimit = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_INITIAL_CONSUMPTION_LIMIT, DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT_CAKES,
|
||||
arcToCake(1));
|
||||
mHardSatiatedConsumptionLimit = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_HARD_CONSUMPTION_LIMIT, DEFAULT_AM_HARD_CONSUMPTION_LIMIT_CAKES,
|
||||
mInitialSatiatedConsumptionLimit);
|
||||
KEY_AM_INITIAL_CONSUMPTION_LIMIT, DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT_CAKES,
|
||||
mMinSatiatedConsumptionLimit);
|
||||
mMaxSatiatedConsumptionLimit = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_MAX_CONSUMPTION_LIMIT, DEFAULT_AM_MAX_CONSUMPTION_LIMIT_CAKES,
|
||||
mInitialSatiatedConsumptionLimit);
|
||||
|
||||
final long exactAllowWhileIdleWakeupBasePrice = getConstantAsCake(mParser, properties,
|
||||
KEY_AM_ACTION_ALARM_ALLOW_WHILE_IDLE_EXACT_WAKEUP_BASE_PRICE,
|
||||
@@ -396,9 +407,11 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
|
||||
pw.decreaseIndent();
|
||||
pw.print("Max satiated balance", cakeToString(mMaxSatiatedBalance)).println();
|
||||
pw.print("Consumption limits: [");
|
||||
pw.print(cakeToString(mMinSatiatedConsumptionLimit));
|
||||
pw.print(", ");
|
||||
pw.print(cakeToString(mInitialSatiatedConsumptionLimit));
|
||||
pw.print(", ");
|
||||
pw.print(cakeToString(mHardSatiatedConsumptionLimit));
|
||||
pw.print(cakeToString(mMaxSatiatedConsumptionLimit));
|
||||
pw.println("]");
|
||||
|
||||
pw.println();
|
||||
|
||||
@@ -43,7 +43,8 @@ public class CompleteEconomicPolicy extends EconomicPolicy {
|
||||
private int mEnabledEconomicPolicyIds = 0;
|
||||
private int[] mCostModifiers = EmptyArray.INT;
|
||||
private long mInitialConsumptionLimit;
|
||||
private long mHardConsumptionLimit;
|
||||
private long mMinConsumptionLimit;
|
||||
private long mMaxConsumptionLimit;
|
||||
|
||||
CompleteEconomicPolicy(@NonNull InternalResourceService irs) {
|
||||
this(irs, new CompleteInjector());
|
||||
@@ -100,14 +101,17 @@ public class CompleteEconomicPolicy extends EconomicPolicy {
|
||||
|
||||
private void updateLimits() {
|
||||
long initialConsumptionLimit = 0;
|
||||
long hardConsumptionLimit = 0;
|
||||
long minConsumptionLimit = 0;
|
||||
long maxConsumptionLimit = 0;
|
||||
for (int i = 0; i < mEnabledEconomicPolicies.size(); ++i) {
|
||||
final EconomicPolicy economicPolicy = mEnabledEconomicPolicies.valueAt(i);
|
||||
initialConsumptionLimit += economicPolicy.getInitialSatiatedConsumptionLimit();
|
||||
hardConsumptionLimit += economicPolicy.getHardSatiatedConsumptionLimit();
|
||||
minConsumptionLimit += economicPolicy.getMinSatiatedConsumptionLimit();
|
||||
maxConsumptionLimit += economicPolicy.getMaxSatiatedConsumptionLimit();
|
||||
}
|
||||
mInitialConsumptionLimit = initialConsumptionLimit;
|
||||
mHardConsumptionLimit = hardConsumptionLimit;
|
||||
mMinConsumptionLimit = minConsumptionLimit;
|
||||
mMaxConsumptionLimit = maxConsumptionLimit;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -134,8 +138,13 @@ public class CompleteEconomicPolicy extends EconomicPolicy {
|
||||
}
|
||||
|
||||
@Override
|
||||
long getHardSatiatedConsumptionLimit() {
|
||||
return mHardConsumptionLimit;
|
||||
long getMinSatiatedConsumptionLimit() {
|
||||
return mMinConsumptionLimit;
|
||||
}
|
||||
|
||||
@Override
|
||||
long getMaxSatiatedConsumptionLimit() {
|
||||
return mMaxConsumptionLimit;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
||||
@@ -232,15 +232,21 @@ public abstract class EconomicPolicy {
|
||||
* Returns the maximum number of cakes that should be consumed during a full 100% discharge
|
||||
* cycle. This is the initial limit. The system may choose to increase the limit over time,
|
||||
* but the increased limit should never exceed the value returned from
|
||||
* {@link #getHardSatiatedConsumptionLimit()}.
|
||||
* {@link #getMaxSatiatedConsumptionLimit()}.
|
||||
*/
|
||||
abstract long getInitialSatiatedConsumptionLimit();
|
||||
|
||||
/**
|
||||
* Returns the maximum number of cakes that should be consumed during a full 100% discharge
|
||||
* cycle. This is the hard limit that should never be exceeded.
|
||||
* Returns the minimum number of cakes that should be available for consumption during a full
|
||||
* 100% discharge cycle.
|
||||
*/
|
||||
abstract long getHardSatiatedConsumptionLimit();
|
||||
abstract long getMinSatiatedConsumptionLimit();
|
||||
|
||||
/**
|
||||
* Returns the maximum number of cakes that should be available for consumption during a full
|
||||
* 100% discharge cycle.
|
||||
*/
|
||||
abstract long getMaxSatiatedConsumptionLimit();
|
||||
|
||||
/** Return the set of modifiers that should apply to this policy's costs. */
|
||||
@NonNull
|
||||
|
||||
@@ -670,7 +670,7 @@ public class InternalResourceService extends SystemService {
|
||||
final long shortfall = (mCurrentBatteryLevel - QUANTITATIVE_EASING_BATTERY_THRESHOLD)
|
||||
* currentConsumptionLimit / 100;
|
||||
final long newConsumptionLimit = Math.min(currentConsumptionLimit + shortfall,
|
||||
mCompleteEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
mCompleteEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
if (newConsumptionLimit != currentConsumptionLimit) {
|
||||
Slog.i(TAG, "Increasing consumption limit from " + cakeToString(currentConsumptionLimit)
|
||||
+ " to " + cakeToString(newConsumptionLimit));
|
||||
@@ -720,12 +720,12 @@ public class InternalResourceService extends SystemService {
|
||||
// The stock is too low. We're doing pretty well. We can increase the stock slightly
|
||||
// to let apps do more work in the background.
|
||||
newConsumptionLimit = Math.min((long) (currentConsumptionLimit * 1.01),
|
||||
mCompleteEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
mCompleteEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
} else if (percentageOfTarget < 100) {
|
||||
// The stock is too high IMO. We're below the target. Decrease the stock to reduce
|
||||
// background work.
|
||||
newConsumptionLimit = Math.max((long) (currentConsumptionLimit * .98),
|
||||
mCompleteEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
mCompleteEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
} else {
|
||||
// The stock is just right.
|
||||
return;
|
||||
@@ -957,9 +957,9 @@ public class InternalResourceService extends SystemService {
|
||||
} else {
|
||||
mScribe.loadFromDiskLocked();
|
||||
if (mScribe.getSatiatedConsumptionLimitLocked()
|
||||
< mCompleteEconomicPolicy.getInitialSatiatedConsumptionLimit()
|
||||
< mCompleteEconomicPolicy.getMinSatiatedConsumptionLimit()
|
||||
|| mScribe.getSatiatedConsumptionLimitLocked()
|
||||
> mCompleteEconomicPolicy.getHardSatiatedConsumptionLimit()) {
|
||||
> mCompleteEconomicPolicy.getMaxSatiatedConsumptionLimit()) {
|
||||
// Reset the consumption limit since several factors may have changed.
|
||||
mScribe.setConsumptionLimitLocked(
|
||||
mCompleteEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
@@ -1442,17 +1442,16 @@ public class InternalResourceService extends SystemService {
|
||||
|
||||
private void updateEconomicPolicy() {
|
||||
synchronized (mLock) {
|
||||
final long initialLimit =
|
||||
mCompleteEconomicPolicy.getInitialSatiatedConsumptionLimit();
|
||||
final long hardLimit = mCompleteEconomicPolicy.getHardSatiatedConsumptionLimit();
|
||||
final long minLimit = mCompleteEconomicPolicy.getMinSatiatedConsumptionLimit();
|
||||
final long maxLimit = mCompleteEconomicPolicy.getMaxSatiatedConsumptionLimit();
|
||||
final int oldEnabledPolicies = mCompleteEconomicPolicy.getEnabledPolicyIds();
|
||||
mCompleteEconomicPolicy.tearDown();
|
||||
mCompleteEconomicPolicy = new CompleteEconomicPolicy(InternalResourceService.this);
|
||||
if (mIsEnabled && mBootPhase >= PHASE_THIRD_PARTY_APPS_CAN_START) {
|
||||
mCompleteEconomicPolicy.setup(getAllDeviceConfigProperties());
|
||||
if (initialLimit != mCompleteEconomicPolicy.getInitialSatiatedConsumptionLimit()
|
||||
|| hardLimit
|
||||
!= mCompleteEconomicPolicy.getHardSatiatedConsumptionLimit()) {
|
||||
if (minLimit != mCompleteEconomicPolicy.getMinSatiatedConsumptionLimit()
|
||||
|| maxLimit
|
||||
!= mCompleteEconomicPolicy.getMaxSatiatedConsumptionLimit()) {
|
||||
// Reset the consumption limit since several factors may have changed.
|
||||
mScribe.setConsumptionLimitLocked(
|
||||
mCompleteEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
|
||||
@@ -38,9 +38,10 @@ import static android.app.tare.EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_START_BA
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_START_CTP_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_HARD_CONSUMPTION_LIMIT_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT_CAKES;
|
||||
import static android.app.tare.EconomyManager.DEFAULT_JS_MAX_CONSUMPTION_LIMIT_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_SATIATED_BALANCE_EXEMPTED_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;
|
||||
@@ -84,9 +85,10 @@ import static android.app.tare.EconomyManager.KEY_JS_ACTION_JOB_MIN_START_BASE_P
|
||||
import static android.app.tare.EconomyManager.KEY_JS_ACTION_JOB_MIN_START_CTP;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_HARD_CONSUMPTION_LIMIT;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_INITIAL_CONSUMPTION_LIMIT;
|
||||
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_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_INCREMENT_APP_UPDATER;
|
||||
import static android.app.tare.EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP;
|
||||
@@ -159,7 +161,8 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
||||
private long mMinSatiatedBalanceIncrementalAppUpdater;
|
||||
private long mMaxSatiatedBalance;
|
||||
private long mInitialSatiatedConsumptionLimit;
|
||||
private long mHardSatiatedConsumptionLimit;
|
||||
private long mMinSatiatedConsumptionLimit;
|
||||
private long mMaxSatiatedConsumptionLimit;
|
||||
|
||||
private final KeyValueListParser mParser = new KeyValueListParser(',');
|
||||
private final Injector mInjector;
|
||||
@@ -216,8 +219,13 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
||||
}
|
||||
|
||||
@Override
|
||||
long getHardSatiatedConsumptionLimit() {
|
||||
return mHardSatiatedConsumptionLimit;
|
||||
long getMinSatiatedConsumptionLimit() {
|
||||
return mMinSatiatedConsumptionLimit;
|
||||
}
|
||||
|
||||
@Override
|
||||
long getMaxSatiatedConsumptionLimit() {
|
||||
return mMaxSatiatedConsumptionLimit;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -260,12 +268,15 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
||||
mMaxSatiatedBalance = getConstantAsCake(mParser, properties,
|
||||
KEY_JS_MAX_SATIATED_BALANCE, DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES,
|
||||
Math.max(arcToCake(1), mMinSatiatedBalanceExempted));
|
||||
mMinSatiatedConsumptionLimit = getConstantAsCake(mParser, properties,
|
||||
KEY_JS_MIN_CONSUMPTION_LIMIT, DEFAULT_JS_MIN_CONSUMPTION_LIMIT_CAKES,
|
||||
arcToCake(1));
|
||||
mInitialSatiatedConsumptionLimit = getConstantAsCake(mParser, properties,
|
||||
KEY_JS_INITIAL_CONSUMPTION_LIMIT, DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT_CAKES,
|
||||
arcToCake(1));
|
||||
mHardSatiatedConsumptionLimit = getConstantAsCake(mParser, properties,
|
||||
KEY_JS_HARD_CONSUMPTION_LIMIT, DEFAULT_JS_HARD_CONSUMPTION_LIMIT_CAKES,
|
||||
mInitialSatiatedConsumptionLimit);
|
||||
KEY_JS_INITIAL_CONSUMPTION_LIMIT, DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT_CAKES,
|
||||
mMinSatiatedConsumptionLimit);
|
||||
mMaxSatiatedConsumptionLimit = getConstantAsCake(mParser, properties,
|
||||
KEY_JS_MAX_CONSUMPTION_LIMIT, DEFAULT_JS_MAX_CONSUMPTION_LIMIT_CAKES,
|
||||
mInitialSatiatedConsumptionLimit);
|
||||
|
||||
mActions.put(ACTION_JOB_MAX_START, new Action(ACTION_JOB_MAX_START,
|
||||
getConstantAsCake(mParser, properties,
|
||||
@@ -420,9 +431,11 @@ public class JobSchedulerEconomicPolicy extends EconomicPolicy {
|
||||
pw.decreaseIndent();
|
||||
pw.print("Max satiated balance", cakeToString(mMaxSatiatedBalance)).println();
|
||||
pw.print("Consumption limits: [");
|
||||
pw.print(cakeToString(mMinSatiatedConsumptionLimit));
|
||||
pw.print(", ");
|
||||
pw.print(cakeToString(mInitialSatiatedConsumptionLimit));
|
||||
pw.print(", ");
|
||||
pw.print(cakeToString(mHardSatiatedConsumptionLimit));
|
||||
pw.print(cakeToString(mMaxSatiatedConsumptionLimit));
|
||||
pw.println("]");
|
||||
|
||||
pw.println();
|
||||
|
||||
@@ -73,7 +73,12 @@ public class AgentTrendCalculatorTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
long getHardSatiatedConsumptionLimit() {
|
||||
long getMinSatiatedConsumptionLimit() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
long getMaxSatiatedConsumptionLimit() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -132,8 +132,10 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
public void testDefaults() {
|
||||
assertEquals(EconomyManager.DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_AM_HARD_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MIN_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MAX_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(0, mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
@@ -150,13 +152,15 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
@Test
|
||||
public void testConstantsUpdating_ValidValues() {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_INITIAL_CONSUMPTION_LIMIT, arcToCake(5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_HARD_CONSUMPTION_LIMIT, arcToCake(25));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_CONSUMPTION_LIMIT, arcToCake(3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(25));
|
||||
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_OTHER_APP, arcToCake(7));
|
||||
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(25), mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(3), mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(25), mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
@@ -171,13 +175,15 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
public void testConstantsUpdating_InvalidValues() {
|
||||
// Test negatives.
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_INITIAL_CONSUMPTION_LIMIT, arcToCake(-5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_HARD_CONSUMPTION_LIMIT, arcToCake(-5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_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_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(-2));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(-3));
|
||||
|
||||
assertEquals(arcToCake(1), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(1), mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(1), mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(1), mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
@@ -188,14 +194,16 @@ public class AlarmManagerEconomicPolicyTest {
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMinSatiatedBalance(0, "com.any.other.app"));
|
||||
|
||||
// Test min+max reversed.
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_INITIAL_CONSUMPTION_LIMIT, arcToCake(5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_HARD_CONSUMPTION_LIMIT, arcToCake(3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_CONSUMPTION_LIMIT, arcToCake(5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_INITIAL_CONSUMPTION_LIMIT, arcToCake(4));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(3));
|
||||
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_OTHER_APP, arcToCake(13));
|
||||
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
|
||||
@@ -155,9 +155,12 @@ public class CompleteEconomicPolicyTest {
|
||||
assertEquals(EconomyManager.DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT_CAKES
|
||||
+ EconomyManager.DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_JS_HARD_CONSUMPTION_LIMIT_CAKES
|
||||
+ EconomyManager.DEFAULT_AM_HARD_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MIN_CONSUMPTION_LIMIT_CAKES
|
||||
+ EconomyManager.DEFAULT_AM_MIN_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MAX_CONSUMPTION_LIMIT_CAKES
|
||||
+ EconomyManager.DEFAULT_AM_MAX_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(0, mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
@@ -178,8 +181,10 @@ public class CompleteEconomicPolicyTest {
|
||||
public void testConstantsUpdated() {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_INITIAL_CONSUMPTION_LIMIT, arcToCake(4));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_INITIAL_CONSUMPTION_LIMIT, arcToCake(6));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_HARD_CONSUMPTION_LIMIT, arcToCake(24));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_HARD_CONSUMPTION_LIMIT, arcToCake(26));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_CONSUMPTION_LIMIT, arcToCake(2));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_CONSUMPTION_LIMIT, arcToCake(3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(24));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_CONSUMPTION_LIMIT, arcToCake(26));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE, arcToCake(9));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MAX_SATIATED_BALANCE, arcToCake(11));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(8));
|
||||
@@ -188,7 +193,8 @@ public class CompleteEconomicPolicyTest {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(2));
|
||||
|
||||
assertEquals(arcToCake(10), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(50), mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(50), mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
@@ -206,8 +212,10 @@ public class CompleteEconomicPolicyTest {
|
||||
setDeviceConfigBoolean(EconomyManager.KEY_ENABLE_POLICY_JOB_SCHEDULER, false);
|
||||
assertEquals(EconomyManager.DEFAULT_AM_INITIAL_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_AM_HARD_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MIN_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_AM_MAX_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(0, mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
@@ -229,8 +237,10 @@ public class CompleteEconomicPolicyTest {
|
||||
setDeviceConfigBoolean(EconomyManager.KEY_ENABLE_POLICY_JOB_SCHEDULER, true);
|
||||
assertEquals(EconomyManager.DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_JS_HARD_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MIN_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MAX_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(0, mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE_CAKES,
|
||||
|
||||
@@ -132,8 +132,10 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
public void testDefaults() {
|
||||
assertEquals(EconomyManager.DEFAULT_JS_INITIAL_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_JS_HARD_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MIN_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(EconomyManager.DEFAULT_JS_MAX_CONSUMPTION_LIMIT_CAKES,
|
||||
mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
@@ -171,7 +173,8 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
@Test
|
||||
public void testConstantsUpdating_ValidValues() {
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_INITIAL_CONSUMPTION_LIMIT, arcToCake(5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_HARD_CONSUMPTION_LIMIT, arcToCake(25));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_CONSUMPTION_LIMIT, arcToCake(2));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(25));
|
||||
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_OTHER_APP, arcToCake(4));
|
||||
@@ -179,7 +182,8 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
arcToCake(1));
|
||||
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(25), mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(2), mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(25), mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
@@ -198,7 +202,8 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
public void testConstantsUpdating_InvalidValues() {
|
||||
// Test negatives.
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_INITIAL_CONSUMPTION_LIMIT, arcToCake(-5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_HARD_CONSUMPTION_LIMIT, arcToCake(-5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_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_MIN_SATIATED_BALANCE_EXEMPTED, arcToCake(-2));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP, arcToCake(-3));
|
||||
@@ -206,7 +211,8 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
arcToCake(-4));
|
||||
|
||||
assertEquals(arcToCake(1), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(1), mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(1), mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(1), mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
final String pkgRestricted = "com.pkg.restricted";
|
||||
when(mIrs.isPackageRestricted(anyInt(), eq(pkgRestricted))).thenReturn(true);
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
@@ -221,14 +227,16 @@ public class JobSchedulerEconomicPolicyTest {
|
||||
mEconomicPolicy.getMinSatiatedBalance(0, pkgUpdater));
|
||||
|
||||
// Test min+max reversed.
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_INITIAL_CONSUMPTION_LIMIT, arcToCake(5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_HARD_CONSUMPTION_LIMIT, arcToCake(3));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MIN_CONSUMPTION_LIMIT, arcToCake(5));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_INITIAL_CONSUMPTION_LIMIT, arcToCake(4));
|
||||
setDeviceConfigCakes(EconomyManager.KEY_JS_MAX_CONSUMPTION_LIMIT, arcToCake(3));
|
||||
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_OTHER_APP, arcToCake(13));
|
||||
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getInitialSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getHardSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getMinSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(5), mEconomicPolicy.getMaxSatiatedConsumptionLimit());
|
||||
assertEquals(arcToCake(0), mEconomicPolicy.getMaxSatiatedBalance(0, pkgRestricted));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMaxSatiatedBalance(0, "com.any.other.app"));
|
||||
assertEquals(arcToCake(13), mEconomicPolicy.getMinSatiatedBalance(0, pkgExempted));
|
||||
|
||||
Reference in New Issue
Block a user