aboutsummaryrefslogtreecommitdiff
path: root/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionDatabaseManagerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionDatabaseManagerTest.java')
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionDatabaseManagerTest.java133
1 files changed, 130 insertions, 3 deletions
diff --git a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionDatabaseManagerTest.java b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionDatabaseManagerTest.java
index 0358809584..b42e6d6288 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionDatabaseManagerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionDatabaseManagerTest.java
@@ -26,8 +26,10 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -49,6 +51,7 @@ import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import com.android.internal.telephony.TelephonyTest;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.subscription.SubscriptionDatabaseManager.SubscriptionDatabaseManagerCallback;
import org.junit.After;
@@ -117,10 +120,16 @@ public class SubscriptionDatabaseManagerTest extends TelephonyTest {
static final int FAKE_TP_MESSAGE_REFERENCE2 = 456;
static final int FAKE_USER_ID1 = 10;
static final int FAKE_USER_ID2 = 11;
+ static final int FAKE_SATELLITE_ATTACH_FOR_CARRIER_ENABLED = 1;
+ static final int FAKE_SATELLITE_ATTACH_FOR_CARRIER_DISABLED = 0;
+ static final int FAKE_SATELLITE_IS_NTN_ENABLED = 1;
+ static final int FAKE_SATELLITE_IS_NTN_DISABLED = 0;
static final String FAKE_MAC_ADDRESS1 = "DC:E5:5B:38:7D:40";
static final String FAKE_MAC_ADDRESS2 = "DC:B5:4F:47:F3:4C";
+ private FeatureFlags mFeatureFlags;
+
static final SubscriptionInfoInternal FAKE_SUBSCRIPTION_INFO1 =
new SubscriptionInfoInternal.Builder()
.setId(1)
@@ -186,6 +195,9 @@ public class SubscriptionDatabaseManagerTest extends TelephonyTest {
.setLastUsedTPMessageReference(FAKE_TP_MESSAGE_REFERENCE1)
.setUserId(FAKE_USER_ID1)
.setSatelliteEnabled(0)
+ .setSatelliteAttachEnabledForCarrier(
+ FAKE_SATELLITE_ATTACH_FOR_CARRIER_DISABLED)
+ .setOnlyNonTerrestrialNetwork(FAKE_SATELLITE_IS_NTN_DISABLED)
.setGroupDisabled(false)
.build();
@@ -254,6 +266,9 @@ public class SubscriptionDatabaseManagerTest extends TelephonyTest {
.setLastUsedTPMessageReference(FAKE_TP_MESSAGE_REFERENCE2)
.setUserId(FAKE_USER_ID2)
.setSatelliteEnabled(1)
+ .setSatelliteAttachEnabledForCarrier(
+ FAKE_SATELLITE_ATTACH_FOR_CARRIER_ENABLED)
+ .setOnlyNonTerrestrialNetwork(FAKE_SATELLITE_IS_NTN_ENABLED)
.setGroupDisabled(false)
.build();
@@ -406,14 +421,16 @@ public class SubscriptionDatabaseManagerTest extends TelephonyTest {
((Runnable) invocation.getArguments()[0]).run();
return null;
}).when(mSubscriptionDatabaseManagerCallback).invokeFromExecutor(any(Runnable.class));
+ mFeatureFlags = Mockito.mock(FeatureFlags.class);
((MockContentResolver) mContext.getContentResolver()).addProvider(
Telephony.Carriers.CONTENT_URI.getAuthority(), mSubscriptionProvider);
doReturn(1).when(mUiccController).convertToPublicCardId(eq(FAKE_ICCID1));
doReturn(2).when(mUiccController).convertToPublicCardId(eq(FAKE_ICCID2));
+ when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true);
mDatabaseManagerUT = new SubscriptionDatabaseManager(mContext, Looper.myLooper(),
- mSubscriptionDatabaseManagerCallback);
+ mFeatureFlags, mSubscriptionDatabaseManagerCallback);
logd("SubscriptionDatabaseManagerTest -Setup!");
}
@@ -518,7 +535,7 @@ public class SubscriptionDatabaseManagerTest extends TelephonyTest {
mContextFixture.putBooleanResource(com.android.internal.R.bool
.config_subscription_database_async_update, false);
mDatabaseManagerUT = new SubscriptionDatabaseManager(mContext, Looper.myLooper(),
- mSubscriptionDatabaseManagerCallback);
+ mFeatureFlags, mSubscriptionDatabaseManagerCallback);
assertThat(insertSubscriptionAndVerify(FAKE_SUBSCRIPTION_INFO1).getSubscriptionId())
.isEqualTo(1);
@@ -1930,6 +1947,115 @@ public class SubscriptionDatabaseManagerTest extends TelephonyTest {
}
@Test
+ public void testUpdateCarrierHandoverToSatelliteEnabled() throws Exception {
+ // exception is expected if there is nothing in the database.
+ assertThrows(IllegalArgumentException.class,
+ () -> mDatabaseManagerUT.setSatelliteAttachEnabledForCarrier(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ FAKE_SATELLITE_ATTACH_FOR_CARRIER_ENABLED));
+
+ SubscriptionInfoInternal subInfo = insertSubscriptionAndVerify(FAKE_SUBSCRIPTION_INFO1);
+ mDatabaseManagerUT.setSatelliteAttachEnabledForCarrier(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ FAKE_SATELLITE_ATTACH_FOR_CARRIER_ENABLED);
+ processAllMessages();
+
+ subInfo = new SubscriptionInfoInternal.Builder(subInfo)
+ .setSatelliteAttachEnabledForCarrier(
+ FAKE_SATELLITE_ATTACH_FOR_CARRIER_ENABLED)
+ .build();
+ verifySubscription(subInfo);
+ verify(mSubscriptionDatabaseManagerCallback, times(2)).onSubscriptionChanged(eq(1));
+
+ assertThat(mDatabaseManagerUT.getSubscriptionProperty(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ SimInfo.COLUMN_SATELLITE_ATTACH_ENABLED_FOR_CARRIER))
+ .isEqualTo(FAKE_SATELLITE_ATTACH_FOR_CARRIER_ENABLED);
+
+ mDatabaseManagerUT.setSubscriptionProperty(FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ SimInfo.COLUMN_SATELLITE_ATTACH_ENABLED_FOR_CARRIER,
+ FAKE_SATELLITE_ATTACH_FOR_CARRIER_DISABLED);
+ assertThat(mDatabaseManagerUT.getSubscriptionInfoInternal(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId())
+ .getSatelliteAttachEnabledForCarrier())
+ .isEqualTo(FAKE_SATELLITE_ATTACH_FOR_CARRIER_DISABLED);
+ }
+
+ @Test
+ public void testUpdateSatelliteNtn() throws Exception {
+ // exception is expected if there is nothing in the database.
+ assertThrows(IllegalArgumentException.class,
+ () -> mDatabaseManagerUT.setNtn(FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ FAKE_SATELLITE_IS_NTN_ENABLED));
+
+ SubscriptionInfoInternal subInfo = insertSubscriptionAndVerify(FAKE_SUBSCRIPTION_INFO1);
+ mDatabaseManagerUT.setNtn(FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ FAKE_SATELLITE_IS_NTN_ENABLED);
+ processAllMessages();
+
+ subInfo = new SubscriptionInfoInternal.Builder(subInfo)
+ .setOnlyNonTerrestrialNetwork(FAKE_SATELLITE_IS_NTN_ENABLED)
+ .build();
+ verifySubscription(subInfo);
+ verify(mSubscriptionDatabaseManagerCallback, times(2)).onSubscriptionChanged(eq(1));
+
+ assertThat(mDatabaseManagerUT.getSubscriptionProperty(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ SimInfo.COLUMN_IS_NTN)).isEqualTo(FAKE_SATELLITE_IS_NTN_ENABLED);
+
+ mDatabaseManagerUT.setSubscriptionProperty(FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ SimInfo.COLUMN_IS_NTN, FAKE_SATELLITE_IS_NTN_DISABLED);
+ assertThat(mDatabaseManagerUT.getSubscriptionInfoInternal(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId()).getOnlyNonTerrestrialNetwork())
+ .isEqualTo(FAKE_SATELLITE_IS_NTN_DISABLED);
+ }
+
+ @Test
+ public void testUpdateSatelliteNtnWithFeatureDisabled() throws Exception {
+ assertThrows(IllegalArgumentException.class,
+ () -> mDatabaseManagerUT.setSatelliteAttachEnabledForCarrier(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ FAKE_SATELLITE_ATTACH_FOR_CARRIER_ENABLED));
+
+ SubscriptionInfoInternal subInfo = insertSubscriptionAndVerify(FAKE_SUBSCRIPTION_INFO1);
+ mDatabaseManagerUT.setSatelliteAttachEnabledForCarrier(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ FAKE_SATELLITE_IS_NTN_DISABLED);
+ processAllMessages();
+
+ when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(false);
+ reset(mSubscriptionDatabaseManagerCallback);
+ subInfo = new SubscriptionInfoInternal.Builder(subInfo)
+ .setOnlyNonTerrestrialNetwork(FAKE_SATELLITE_IS_NTN_ENABLED)
+ .build();
+
+ int subId = subInfo.getSubscriptionId();
+ // Verify the cache value is not same as the inserted one.
+ assertWithMessage("Subscription info cache value is not different.")
+ .that(mDatabaseManagerUT.getSubscriptionInfoInternal(subId)).isNotEqualTo(subInfo);
+
+ // Load subscription info from the database.
+ mDatabaseManagerUT.reloadDatabaseSync();
+ processAllMessages();
+
+ // Verify the database value is not same as the inserted one.
+ assertWithMessage("Subscription info database value is not different.")
+ .that(mDatabaseManagerUT.getSubscriptionInfoInternal(subId)).isNotEqualTo(subInfo);
+
+ verify(mSubscriptionDatabaseManagerCallback, never()).onSubscriptionChanged(eq(1));
+
+ assertThat(mDatabaseManagerUT.getSubscriptionProperty(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ SimInfo.COLUMN_IS_NTN)).isNotEqualTo(FAKE_SATELLITE_IS_NTN_ENABLED);
+
+ mDatabaseManagerUT.setSubscriptionProperty(FAKE_SUBSCRIPTION_INFO1.getSubscriptionId(),
+ SimInfo.COLUMN_IS_NTN, FAKE_SATELLITE_IS_NTN_ENABLED);
+ assertThat(mDatabaseManagerUT.getSubscriptionInfoInternal(
+ FAKE_SUBSCRIPTION_INFO1.getSubscriptionId()).getOnlyNonTerrestrialNetwork())
+ .isNotEqualTo(FAKE_SATELLITE_IS_NTN_ENABLED);
+ }
+
+ @Test
public void testUpdateSubscriptionsInGroup() throws Exception {
insertSubscriptionAndVerify(FAKE_SUBSCRIPTION_INFO1);
insertSubscriptionAndVerify(FAKE_SUBSCRIPTION_INFO2);
@@ -2033,7 +2159,8 @@ public class SubscriptionDatabaseManagerTest extends TelephonyTest {
}
};
assertThat(callback.getExecutor()).isEqualTo(executor);
- mDatabaseManagerUT = new SubscriptionDatabaseManager(mContext, Looper.myLooper(), callback);
+ mDatabaseManagerUT = new SubscriptionDatabaseManager(mContext, Looper.myLooper(),
+ mFeatureFlags, callback);
processAllMessages();
assertThat(latch.getCount()).isEqualTo(1);