diff options
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.java | 133 |
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); |