summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPo-Chun Lee <pochunlee@google.com>2024-02-21 19:08:28 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2024-02-21 19:08:28 +0000
commit22c3b71cea50647ef284d96927f5cf6397e92b82 (patch)
tree836b3110194878c625c0eb0e931c331cfba14d80
parentdd425c683938df6928cf38b12bc6508e308d394f (diff)
parent792a63cc312aebbbb05d0dec01d71b0e003ecf7f (diff)
downloadIwlan-temp_319669529.tar.gz
Add IwlanCarrierConfig#putTestConfig*() utilities am: 792a63cc31temp_319669529
Original change: https://android-review.googlesource.com/c/platform/packages/services/Iwlan/+/2966404 Change-Id: I08485045eb01b813ca311adc8795f8d06a103c2f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--Android.bp7
-rw-r--r--src/com/google/android/iwlan/IwlanCarrierConfig.java78
-rw-r--r--src/com/google/android/iwlan/IwlanDataService.java14
-rw-r--r--test/com/google/android/iwlan/IwlanDataServiceTest.java95
4 files changed, 113 insertions, 81 deletions
diff --git a/Android.bp b/Android.bp
index f9d0c76..5071860 100644
--- a/Android.bp
+++ b/Android.bp
@@ -5,8 +5,8 @@ package {
genrule {
name: "statslog-Iwlan-java-gen",
tools: ["stats-log-api-gen"],
- cmd: "$(location stats-log-api-gen) --java $(out) --module iwlan --javaPackage com.google.android.iwlan"
- + " --javaClass IwlanStatsLog",
+ cmd: "$(location stats-log-api-gen) --java $(out) --module iwlan --javaPackage com.google.android.iwlan" +
+ " --javaClass IwlanStatsLog",
out: ["com/google/android/iwlan/IwlanStatsLog.java"],
}
@@ -29,11 +29,12 @@ android_app {
libs: [
"android.net.ipsec.ike.stubs.system",
+ "androidx.annotation_annotation",
"auto_value_annotations",
"framework-annotations-lib",
"framework-connectivity",
"framework-wifi",
- "modules-utils-handlerexecutor"
+ "modules-utils-handlerexecutor",
],
plugins: ["auto_value_plugin"],
diff --git a/src/com/google/android/iwlan/IwlanCarrierConfig.java b/src/com/google/android/iwlan/IwlanCarrierConfig.java
index fcaff90..e68341a 100644
--- a/src/com/google/android/iwlan/IwlanCarrierConfig.java
+++ b/src/com/google/android/iwlan/IwlanCarrierConfig.java
@@ -21,6 +21,8 @@ import android.os.PersistableBundle;
import android.support.annotation.NonNull;
import android.telephony.CarrierConfigManager;
+import androidx.annotation.VisibleForTesting;
+
/** Class for handling IWLAN carrier configuration. */
public class IwlanCarrierConfig {
static final String PREFIX = "iwlan.";
@@ -66,10 +68,12 @@ public class IwlanCarrierConfig {
*/
public static final boolean DEFAULT_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL = true;
- private static PersistableBundle mHiddenBundle = new PersistableBundle();
+ private static PersistableBundle sTestBundle = new PersistableBundle();
+
+ private static PersistableBundle sHiddenBundle = new PersistableBundle();
static {
- mHiddenBundle = createHiddenDefaultConfig();
+ sHiddenBundle = createHiddenDefaultConfig();
}
/**
@@ -103,13 +107,17 @@ public class IwlanCarrierConfig {
}
private static PersistableBundle getDefaultConfig(String key) {
+ if (sTestBundle.containsKey(key)) {
+ return sTestBundle;
+ }
+
PersistableBundle bundle = CarrierConfigManager.getDefaultConfig();
if (bundle.containsKey(key)) {
return bundle;
}
- if (mHiddenBundle.containsKey(key)) {
- return mHiddenBundle;
+ if (sHiddenBundle.containsKey(key)) {
+ return sHiddenBundle;
}
throw new IllegalArgumentException("Default config not found for key: " + key);
@@ -289,6 +297,7 @@ public class IwlanCarrierConfig {
public static boolean getDefaultConfigBoolean(String key) {
return getDefaultConfig(key).getBoolean(key);
}
+
/**
* Gets the default configuration int[] value for a given key.
*
@@ -310,6 +319,7 @@ public class IwlanCarrierConfig {
public static long[] getDefaultConfigLongArray(String key) {
return getDefaultConfig(key).getLongArray(key);
}
+
/**
* Gets the default configuration double[] value for a given key.
*
@@ -342,4 +352,64 @@ public class IwlanCarrierConfig {
public static boolean[] getDefaultConfigBooleanArray(String key) {
return getDefaultConfig(key).getBooleanArray(key);
}
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigBundle(PersistableBundle bundle) {
+ sTestBundle.putAll(bundle);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigInt(@NonNull String key, int value) {
+ sTestBundle.putInt(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigLong(@NonNull String key, long value) {
+ sTestBundle.putLong(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigDouble(@NonNull String key, double value) {
+ sTestBundle.putDouble(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigBoolean(@NonNull String key, boolean value) {
+ sTestBundle.putBoolean(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigString(@NonNull String key, String value) {
+ sTestBundle.putString(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigIntArray(@NonNull String key, @NonNull int[] value) {
+ sTestBundle.putIntArray(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigLongArray(@NonNull String key, @NonNull long[] value) {
+ sTestBundle.putLongArray(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigDoubleArray(@NonNull String key, @NonNull double[] value) {
+ sTestBundle.putDoubleArray(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigBooleanArray(@NonNull String key, @NonNull boolean[] value) {
+ sTestBundle.putBooleanArray(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void putTestConfigStringArray(@NonNull String key, @NonNull String[] value) {
+ sTestBundle.putStringArray(key, value);
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ static void resetTestConfig() {
+ sTestBundle.clear();
+ }
}
diff --git a/src/com/google/android/iwlan/IwlanDataService.java b/src/com/google/android/iwlan/IwlanDataService.java
index c1c8bc3..7c680ea 100644
--- a/src/com/google/android/iwlan/IwlanDataService.java
+++ b/src/com/google/android/iwlan/IwlanDataService.java
@@ -1257,10 +1257,10 @@ public class IwlanDataService extends DataService {
protected boolean isN1ModeSupported() {
int[] nrAvailabilities =
- IwlanHelper.getConfig(
- CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY,
+ IwlanCarrierConfig.getConfigIntArray(
mContext,
- getSlotIndex());
+ getSlotIndex(),
+ CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY);
Log.d(
TAG,
"KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY : "
@@ -1518,11 +1518,11 @@ public class IwlanDataService extends DataService {
if (cellInfolist != null
&& iwlanDataServiceProvider.isRegisteredCellInfoChanged(cellInfolist)) {
int[] addrResolutionMethods =
- IwlanHelper.getConfig(
- CarrierConfigManager.Iwlan
- .KEY_EPDG_ADDRESS_PRIORITY_INT_ARRAY,
+ IwlanCarrierConfig.getConfigIntArray(
mContext,
- iwlanDataServiceProvider.getSlotIndex());
+ iwlanDataServiceProvider.getSlotIndex(),
+ CarrierConfigManager.Iwlan
+ .KEY_EPDG_ADDRESS_PRIORITY_INT_ARRAY);
for (int addrResolutionMethod : addrResolutionMethods) {
if (addrResolutionMethod
== CarrierConfigManager.Iwlan.EPDG_ADDRESS_CELLULAR_LOC) {
diff --git a/test/com/google/android/iwlan/IwlanDataServiceTest.java b/test/com/google/android/iwlan/IwlanDataServiceTest.java
index bb53780..6168b82 100644
--- a/test/com/google/android/iwlan/IwlanDataServiceTest.java
+++ b/test/com/google/android/iwlan/IwlanDataServiceTest.java
@@ -145,7 +145,6 @@ public class IwlanDataServiceTest {
@Mock private LinkAddress mMockIPv6LinkAddress;
@Mock private Inet4Address mMockInet4Address;
@Mock private Inet6Address mMockInet6Address;
- @Mock private CarrierConfigManager mMockCarrierConfigManager;
@Mock private FeatureFlags mFakeFeatureFlags;
MockitoSession mStaticMockSession;
@@ -216,7 +215,6 @@ public class IwlanDataServiceTest {
.mockStatic(ErrorPolicyManager.class)
.mockStatic(IwlanBroadcastReceiver.class)
.mockStatic(SubscriptionManager.class)
- .mockStatic(IwlanCarrierConfig.class)
.strictness(Strictness.LENIENT)
.startMocking();
@@ -265,8 +263,6 @@ public class IwlanDataServiceTest {
mIwlanDataService = spy(new IwlanDataService(mFakeFeatureFlags));
- when(mMockContext.getSystemService(eq(CarrierConfigManager.class)))
- .thenReturn(mMockCarrierConfigManager);
// Injects the test looper into the IwlanDataServiceHandler
doReturn(mTestLooper.getLooper()).when(mIwlanDataService).getLooper();
mIwlanDataService.setAppContext(mMockContext);
@@ -284,8 +280,9 @@ public class IwlanDataServiceTest {
when(mMockConnectivityManager.getLinkProperties(eq(mMockNetwork)))
.thenReturn(mLinkProperties);
-
when(mMockTunnelLinkProperties.ifaceName()).thenReturn("mockipsec0");
+
+ mockCarrierConfigForN1Mode(true);
}
private void moveTimeForwardAndDispatch(long milliSeconds) {
@@ -296,6 +293,7 @@ public class IwlanDataServiceTest {
@After
public void cleanUp() throws Exception {
mStaticMockSession.finishMocking();
+ IwlanCarrierConfig.resetTestConfig();
mSpyIwlanDataServiceProvider.close();
mTestLooper.dispatchAll();
if (mIwlanDataService != null) {
@@ -928,11 +926,8 @@ public class IwlanDataServiceTest {
public void testDeactivateDataCall_DelayedReleaseAfterHandover() {
DataProfile dp = buildImsDataProfile();
- when(IwlanCarrierConfig.getConfigInt(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_HANDOVER_TO_WWAN_RELEASE_DELAY_SECOND_INT))
- .thenReturn(3);
+ IwlanCarrierConfig.putTestConfigInt(
+ IwlanCarrierConfig.KEY_HANDOVER_TO_WWAN_RELEASE_DELAY_SECOND_INT, 3);
onSystemDefaultNetworkConnected(TRANSPORT_WIFI);
mSpyIwlanDataServiceProvider.setTunnelState(
@@ -984,11 +979,8 @@ public class IwlanDataServiceTest {
public void testDeactivateDataCall_DelayedReleaseAfterHandover_NetworkReleaseBeforeDelay() {
DataProfile dp = buildImsDataProfile();
- when(IwlanCarrierConfig.getConfigInt(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_HANDOVER_TO_WWAN_RELEASE_DELAY_SECOND_INT))
- .thenReturn(3);
+ IwlanCarrierConfig.putTestConfigInt(
+ IwlanCarrierConfig.KEY_HANDOVER_TO_WWAN_RELEASE_DELAY_SECOND_INT, 3);
when(ErrorPolicyManager.getInstance(eq(mMockContext), eq(DEFAULT_SLOT_INDEX)))
.thenReturn(mMockErrorPolicyManager);
when(mMockErrorPolicyManager.getDataFailCause(eq(TEST_APN_NAME)))
@@ -2089,15 +2081,6 @@ public class IwlanDataServiceTest {
.build();
}
- private void setupMockForGetConfig(PersistableBundle bundle) {
- if (bundle == null) {
- bundle = new PersistableBundle();
- }
- when(mMockContext.getSystemService(eq(CarrierConfigManager.class)))
- .thenReturn(mMockCarrierConfigManager);
- when(mMockCarrierConfigManager.getConfigForSubId(DEFAULT_SLOT_INDEX)).thenReturn(bundle);
- }
-
private void mockCarrierConfigForN1Mode(boolean supportN1Mode) {
PersistableBundle bundle = new PersistableBundle();
if (supportN1Mode) {
@@ -2112,7 +2095,7 @@ public class IwlanDataServiceTest {
CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY,
new int[] {CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA});
}
- setupMockForGetConfig(bundle);
+ IwlanCarrierConfig.putTestConfigBundle(bundle);
}
private void mockCallState(int callState) {
@@ -2149,7 +2132,7 @@ public class IwlanDataServiceTest {
CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA,
CarrierConfigManager.CARRIER_NR_AVAILABILITY_SA
});
- setupMockForGetConfig(bundle);
+ IwlanCarrierConfig.putTestConfigBundle(bundle);
assertTrue(mSpyIwlanDataServiceProvider.isN1ModeSupported());
bundle.putIntArray(
@@ -2157,18 +2140,15 @@ public class IwlanDataServiceTest {
new int[] {
CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA,
});
- setupMockForGetConfig(bundle);
+ IwlanCarrierConfig.putTestConfigBundle(bundle);
assertFalse(mSpyIwlanDataServiceProvider.isN1ModeSupported());
}
@Test
public void testMultipleAllowedNetworkTypeChangeInIdle_updateN1Mode() throws Exception {
mockCarrierConfigForN1Mode(true);
- when(IwlanCarrierConfig.getConfigBoolean(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL))
- .thenReturn(true);
+ IwlanCarrierConfig.putTestConfigBoolean(
+ IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL, true);
mockCallState(CALL_STATE_IDLE);
mockSetupDataCallWithPduSessionId(0);
updatePreferredNetworkType(NETWORK_TYPE_BITMASK_NR);
@@ -2197,11 +2177,8 @@ public class IwlanDataServiceTest {
public void testMultipleAllowedNetworkTypeChangeInCall_preferenceChanged_updateAfterCallEnds()
throws Exception {
mockCarrierConfigForN1Mode(true);
- when(IwlanCarrierConfig.getConfigBoolean(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL))
- .thenReturn(true);
+ IwlanCarrierConfig.putTestConfigBoolean(
+ IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL, true);
mockCallState(CALL_STATE_RINGING);
mockSetupDataCallWithPduSessionId(0);
@@ -2235,11 +2212,8 @@ public class IwlanDataServiceTest {
public void testMultipleAllowedNetworkTypeChangeInCall_preferenceNotChanged_noUpdate()
throws Exception {
mockCarrierConfigForN1Mode(true);
- when(IwlanCarrierConfig.getConfigBoolean(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL))
- .thenReturn(true);
+ IwlanCarrierConfig.putTestConfigBoolean(
+ IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL, true);
mockCallState(CALL_STATE_RINGING);
mockSetupDataCallWithPduSessionId(0);
@@ -2266,11 +2240,8 @@ public class IwlanDataServiceTest {
@Test
public void testOnAllowedNetworkTypeChange_flagDisabled_noTunnelClose() {
mockCarrierConfigForN1Mode(true);
- when(IwlanCarrierConfig.getConfigBoolean(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL))
- .thenReturn(false);
+ IwlanCarrierConfig.putTestConfigBoolean(
+ IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL, false);
mockCallState(CALL_STATE_IDLE);
mockSetupDataCallWithPduSessionId(0);
@@ -2283,11 +2254,8 @@ public class IwlanDataServiceTest {
@Test
public void testOnAllowedNetworkTypeChange_n1ModeNotSupported_noTunnelClose() {
mockCarrierConfigForN1Mode(false);
- when(IwlanCarrierConfig.getConfigBoolean(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL))
- .thenReturn(true);
+ IwlanCarrierConfig.putTestConfigBoolean(
+ IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL, true);
mockCallState(CALL_STATE_IDLE);
mockSetupDataCallWithPduSessionId(0);
@@ -2300,11 +2268,8 @@ public class IwlanDataServiceTest {
@Test
public void testN1ModeNotSupported_tunnelBringupWithNoN1ModeCapability() {
mockCarrierConfigForN1Mode(false);
- when(IwlanCarrierConfig.getConfigBoolean(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL))
- .thenReturn(true);
+ IwlanCarrierConfig.putTestConfigBoolean(
+ IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL, true);
mockSetupDataCallWithPduSessionId(1);
@@ -2319,11 +2284,8 @@ public class IwlanDataServiceTest {
@Test
public void testNoN1ModeCapabilityInOngoingDataCall_newTunnelBringup_doNotIncludeN1() {
mockCarrierConfigForN1Mode(true);
- when(IwlanCarrierConfig.getConfigBoolean(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL))
- .thenReturn(true);
+ IwlanCarrierConfig.putTestConfigBoolean(
+ IwlanCarrierConfig.KEY_UPDATE_N1_MODE_ON_UI_CHANGE_BOOL, true);
mockSetupDataCallWithPduSessionId(0);
@@ -2376,6 +2338,7 @@ public class IwlanDataServiceTest {
@Test
public void testN1ModeForEmergencySession() {
int pduSessionId = 5;
+ updatePreferredNetworkType(NETWORK_TYPE_BITMASK_NR);
DataProfile dp = buildDataProfile(ApnSetting.TYPE_EMERGENCY);
verifySetupDataCallRequestHandled(pduSessionId, dp);
@@ -2389,11 +2352,9 @@ public class IwlanDataServiceTest {
@Test
public void testN1ModeExclusionForEmergencySession() {
- when(IwlanCarrierConfig.getConfigBoolean(
- mMockContext,
- DEFAULT_SLOT_INDEX,
- IwlanCarrierConfig.KEY_N1_MODE_EXCLUSION_FOR_EMERGENCY_SESSION_BOOL))
- .thenReturn(true);
+ IwlanCarrierConfig.putTestConfigBoolean(
+ IwlanCarrierConfig.KEY_N1_MODE_EXCLUSION_FOR_EMERGENCY_SESSION_BOOL, true);
+ updatePreferredNetworkType(NETWORK_TYPE_BITMASK_NR);
DataProfile dp = buildDataProfile(ApnSetting.TYPE_EMERGENCY);
verifySetupDataCallRequestHandled(5 /* pduSessionId */, dp);