summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorrambowang <rambowang@google.com>2024-03-20 18:41:14 +0000
committerAndroid Build Cherrypicker Worker <android-build-cherrypicker-worker@google.com>2024-03-20 18:41:14 +0000
commitb51b7274062968044521ecb8cd4e7017fb916dd8 (patch)
tree36abe275912a177b895ef0eb1a3714b19e9828c4 /tests
parentdf19a793aca923f22c0e9c26dfd06b6dce9c5acb (diff)
downloadbase-b51b7274062968044521ecb8cd4e7017fb916dd8.tar.gz
Fix VCN crash when retrieving carrier config while phone is gone
This CL calls CarrierConfigManager.getCarrierConfigSubset instead of getConfigForSubId to guard against crashing when phone process has gone. The former method is designed for system components to retrieve carrier configs with consideration of phone process may be gone (e.g. during rebooting from previous crash). Bug: 319791612 Test: atest TelephonySubscriptionTrackerTest (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:d7ebd7c10712a8a319ae6117949d4ece92be4de8) Merged-In: I784610b243db2a666c1fe89b1438950a2f6a1478 Change-Id: I784610b243db2a666c1fe89b1438950a2f6a1478
Diffstat (limited to 'tests')
-rw-r--r--tests/vcn/Android.bp1
-rw-r--r--tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java19
2 files changed, 20 insertions, 0 deletions
diff --git a/tests/vcn/Android.bp b/tests/vcn/Android.bp
index bc1df75bb142..ee2e7cfcd480 100644
--- a/tests/vcn/Android.bp
+++ b/tests/vcn/Android.bp
@@ -31,6 +31,7 @@ android_test {
"platform-test-annotations",
"services.core",
"service-connectivity-tiramisu-pre-jarjar",
+ "flag-junit",
],
libs: [
"android.test.runner",
diff --git a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java
index 34f884b94296..887630b03a8c 100644
--- a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java
+++ b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java
@@ -38,6 +38,7 @@ import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
@@ -58,6 +59,7 @@ import android.os.HandlerExecutor;
import android.os.ParcelUuid;
import android.os.PersistableBundle;
import android.os.test.TestLooper;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -71,7 +73,10 @@ import android.util.ArraySet;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
+import com.android.internal.telephony.flags.Flags;
+
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -128,6 +133,9 @@ public class TelephonySubscriptionTrackerTest {
TEST_SUBID_TO_CARRIER_CONFIG_MAP = Collections.unmodifiableMap(subIdToCarrierConfigMap);
}
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+
@NonNull private final Context mContext;
@NonNull private final TestLooper mTestLooper;
@NonNull private final Handler mHandler;
@@ -185,6 +193,7 @@ public class TelephonySubscriptionTrackerTest {
@Before
public void setUp() throws Exception {
+ mSetFlagsRule.enableFlags(Flags.FLAG_FIX_CRASH_ON_GETTING_CONFIG_WHEN_PHONE_IS_GONE);
doReturn(2).when(mTelephonyManager).getActiveModemCount();
mCallback = mock(TelephonySubscriptionTrackerCallback.class);
@@ -594,4 +603,14 @@ public class TelephonySubscriptionTrackerTest {
new ArraySet<>(Arrays.asList(TEST_SUBSCRIPTION_ID_1, TEST_SUBSCRIPTION_ID_2)),
snapshot.getAllSubIdsInGroup(TEST_PARCEL_UUID));
}
+
+ @Test
+ public void testCarrierConfigChangeWhenPhoneIsGoneShouldNotCrash() throws Exception {
+ doThrow(new IllegalStateException("Carrier config loader is not available."))
+ .when(mCarrierConfigManager)
+ .getConfigForSubId(eq(TEST_SUBSCRIPTION_ID_1), any());
+
+ sendCarrierConfigChange(true /* hasValidSubscription */);
+ mTestLooper.dispatchAll();
+ }
}