summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/util/DebugUtils.java2
-rw-r--r--services/core/java/com/android/server/net/NetworkPolicyManagerService.java5
-rw-r--r--services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java36
3 files changed, 36 insertions, 7 deletions
diff --git a/core/java/android/util/DebugUtils.java b/core/java/android/util/DebugUtils.java
index 20e0d14ac14d..bc5edf89b4b0 100644
--- a/core/java/android/util/DebugUtils.java
+++ b/core/java/android/util/DebugUtils.java
@@ -255,7 +255,7 @@ public class DebugUtils {
if (value == 0 && flagsWasZero) {
return constNameWithoutPrefix(prefix, field);
}
- if ((flags & value) == value) {
+ if (value != 0 && (flags & value) == value) {
flags &= ~value;
res.append(constNameWithoutPrefix(prefix, field)).append('|');
}
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 976a0c663101..72c4c5e85f66 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -1509,6 +1509,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
latch.await(5, TimeUnit.SECONDS);
}
+ @VisibleForTesting
+ Handler getHandlerForTesting() {
+ return mHandler;
+ }
+
/**
* Update mobile policies with data cycle information from {@link CarrierConfigManager}
* if necessary.
diff --git a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
index ba12b7393048..8a489047f179 100644
--- a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
@@ -113,6 +113,7 @@ import android.net.NetworkStatsHistory;
import android.net.NetworkTemplate;
import android.net.StringNetworkSpecifier;
import android.os.Binder;
+import android.os.Handler;
import android.os.INetworkManagementService;
import android.os.PersistableBundle;
import android.os.PowerManagerInternal;
@@ -1117,7 +1118,7 @@ public class NetworkPolicyManagerServiceTest {
// Define simple data plan
final SubscriptionPlan plan = buildMonthlyDataPlan(
ZonedDateTime.parse("2015-11-01T00:00:00.00Z"), DataUnit.MEGABYTES.toBytes(1800));
- mService.setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[] { plan },
+ setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[] { plan },
mServiceContext.getOpPackageName());
// We're 20% through the month (6 days)
@@ -1241,7 +1242,7 @@ public class NetworkPolicyManagerServiceTest {
// Define simple data plan which gives us effectively 60MB/day
final SubscriptionPlan plan = buildMonthlyDataPlan(
ZonedDateTime.parse("2015-11-01T00:00:00.00Z"), DataUnit.MEGABYTES.toBytes(1800));
- mService.setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[] { plan },
+ setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[] { plan },
mServiceContext.getOpPackageName());
// We're 20% through the month (6 days)
@@ -1457,6 +1458,8 @@ public class NetworkPolicyManagerServiceTest {
when(mConnManager.getAllNetworkState()).thenReturn(new NetworkState[0]);
when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[]{FAKE_SUB_ID});
when(mTelephonyManager.getSubscriberId(FAKE_SUB_ID)).thenReturn(FAKE_SUBSCRIBER_ID);
+ when(mTelephonyManager.createForSubscriptionId(FAKE_SUB_ID))
+ .thenReturn(mock(TelephonyManager.class));
PersistableBundle bundle = CarrierConfigManager.getDefaultConfig();
when(mCarrierConfigManager.getConfigForSubId(FAKE_SUB_ID)).thenReturn(bundle);
setNetworkPolicies(buildDefaultFakeMobilePolicy());
@@ -1468,6 +1471,8 @@ public class NetworkPolicyManagerServiceTest {
when(mConnManager.getAllNetworkState()).thenReturn(new NetworkState[0]);
when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[]{FAKE_SUB_ID});
when(mTelephonyManager.getSubscriberId(FAKE_SUB_ID)).thenReturn(FAKE_SUBSCRIBER_ID);
+ when(mTelephonyManager.createForSubscriptionId(FAKE_SUB_ID))
+ .thenReturn(mock(TelephonyManager.class));
when(mCarrierConfigManager.getConfigForSubId(FAKE_SUB_ID)).thenReturn(null);
setNetworkPolicies(buildDefaultFakeMobilePolicy());
// smoke test to make sure no errors are raised
@@ -1653,7 +1658,7 @@ public class NetworkPolicyManagerServiceTest {
final SubscriptionPlan plan = buildMonthlyDataPlan(
ZonedDateTime.parse("2015-11-01T00:00:00.00Z"),
DataUnit.MEGABYTES.toBytes(1800));
- mService.setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[]{plan},
+ setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[]{plan},
mServiceContext.getOpPackageName());
reset(mTelephonyManager, mNetworkManager, mNotifManager);
@@ -1674,7 +1679,7 @@ public class NetworkPolicyManagerServiceTest {
final SubscriptionPlan plan = buildMonthlyDataPlan(
ZonedDateTime.parse("2015-11-01T00:00:00.00Z"),
DataUnit.MEGABYTES.toBytes(100));
- mService.setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[]{plan},
+ setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[]{plan},
mServiceContext.getOpPackageName());
reset(mTelephonyManager, mNetworkManager, mNotifManager);
@@ -1690,7 +1695,7 @@ public class NetworkPolicyManagerServiceTest {
{
final SubscriptionPlan plan = buildMonthlyDataPlan(
ZonedDateTime.parse("2015-11-01T00:00:00.00Z"), BYTES_UNLIMITED);
- mService.setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[]{plan},
+ setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[]{plan},
mServiceContext.getOpPackageName());
reset(mTelephonyManager, mNetworkManager, mNotifManager);
@@ -1707,7 +1712,7 @@ public class NetworkPolicyManagerServiceTest {
{
final SubscriptionPlan plan = buildMonthlyDataPlan(
ZonedDateTime.parse("2015-11-01T00:00:00.00Z"), BYTES_UNLIMITED);
- mService.setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[]{plan},
+ setSubscriptionPlans(TEST_SUB_ID, new SubscriptionPlan[]{plan},
mServiceContext.getOpPackageName());
reset(mTelephonyManager, mNetworkManager, mNotifManager);
@@ -1923,6 +1928,8 @@ public class NetworkPolicyManagerServiceTest {
when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(
new int[] { TEST_SUB_ID });
when(mTelephonyManager.getSubscriberId(TEST_SUB_ID)).thenReturn(TEST_IMSI);
+ when(mTelephonyManager.createForSubscriptionId(TEST_SUB_ID))
+ .thenReturn(mock(TelephonyManager.class));
doNothing().when(mTelephonyManager).setPolicyDataEnabled(anyBoolean(), anyInt());
expectNetworkState(false /* roaming */);
}
@@ -2049,6 +2056,23 @@ public class NetworkPolicyManagerServiceTest {
private FutureIntent mRestrictBackgroundChanged;
+ private void postMsgAndWaitForCompletion() throws InterruptedException {
+ final Handler handler = mService.getHandlerForTesting();
+ final CountDownLatch latch = new CountDownLatch(1);
+ mService.getHandlerForTesting().post(latch::countDown);
+ if (!latch.await(5, TimeUnit.SECONDS)) {
+ fail("Timed out waiting for the test msg to be handled");
+ }
+ }
+
+ private void setSubscriptionPlans(int subId, SubscriptionPlan[] plans, String callingPackage)
+ throws InterruptedException {
+ mService.setSubscriptionPlans(subId, plans, callingPackage);
+ // setSubscriptionPlans() triggers async events, wait for those to be completed before
+ // moving forward as they could interfere with the tests later.
+ postMsgAndWaitForCompletion();
+ }
+
private void setRestrictBackground(boolean flag) throws Exception {
mService.setRestrictBackground(flag);
// Sanity check.