aboutsummaryrefslogtreecommitdiff
path: root/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java')
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java115
1 files changed, 113 insertions, 2 deletions
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
index 808a15d1d9..d96bac49b8 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
@@ -35,6 +35,7 @@ import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
@@ -62,6 +63,7 @@ import android.provider.Telephony;
import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.AccessNetworkConstants.TransportType;
+import android.telephony.Annotation;
import android.telephony.Annotation.DataFailureCause;
import android.telephony.Annotation.NetCapability;
import android.telephony.Annotation.NetworkType;
@@ -1584,6 +1586,14 @@ public class DataNetworkControllerTest extends TelephonyTest {
// Verify data is torn down.
verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+
+ // Registration is back to HOME.
+ serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
+ NetworkRegistrationInfo.REGISTRATION_STATE_HOME);
+ processAllFutureMessages();
+
+ // Verify data is restored.
+ verifyInternetConnected();
}
@Test
@@ -1630,13 +1640,27 @@ public class DataNetworkControllerTest extends TelephonyTest {
doReturn(true).when(controller).isCarrierConfigLoadedForAllSub();
replaceInstance(MultiSimSettingController.class, "sInstance", null, controller);
+ // Mock Data Overall data is always enabled due to auto data switch,
+ // verify the test shouldn't rely on the overall data status
+ doReturn(1).when(mPhone).getSubId();
+ doReturn(2).when(mSubscriptionManagerService).getDefaultDataSubId();
+ Phone phone2 = Mockito.mock(Phone.class);
+ phone2.mCi = mSimulatedCommands;
+ doReturn(true).when(phone2).isUserDataEnabled();
+ doReturn(mDataSettingsManager).when(phone2).getDataSettingsManager();
+ replaceInstance(PhoneFactory.class, "sPhones", null, new Phone[]{mPhone, phone2});
+ mDataNetworkControllerUT.getDataSettingsManager().setMobileDataPolicy(TelephonyManager
+ .MOBILE_DATA_POLICY_AUTO_DATA_SWITCH, true);
+ processAllMessages();
+ clearInvocations(mPhone);
+
controller.notifyAllSubscriptionLoaded();
mDataNetworkControllerUT.getDataSettingsManager().setDataEnabled(
TelephonyManager.DATA_ENABLED_REASON_USER, !isDataEnabled,
mContext.getOpPackageName());
processAllMessages();
- // Verify not to notify MultiSimSettingController
+ // Verify not to notify MultiSimSettingController due to internal calling package
verify(controller, never()).notifyUserDataEnabled(anyInt(), anyBoolean());
mDataNetworkControllerUT.getDataSettingsManager().setDataEnabled(
@@ -1644,7 +1668,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
mContext.getOpPackageName());
processAllMessages();
- // Verify not to notify MultiSimSettingController
+ // Verify not to notify MultiSimSettingController due to internal calling package
verify(controller, never()).notifyUserDataEnabled(anyInt(), anyBoolean());
mDataNetworkControllerUT.getDataSettingsManager().setDataEnabled(
@@ -1655,6 +1679,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
// Verify to notify MultiSimSettingController exactly 2 times
verify(controller, times(2)).notifyUserDataEnabled(anyInt(), anyBoolean());
+ verify(mPhone, never()).notifyDataEnabled(anyBoolean(), anyInt());
}
@Test
@@ -3208,6 +3233,14 @@ public class DataNetworkControllerTest extends TelephonyTest {
processAllMessages();
verifyConnectedNetworkHasCapabilities(NetworkCapabilities.NET_CAPABILITY_DUN);
+
+ // User data disabled
+ mDataNetworkControllerUT.getDataSettingsManager().setDataEnabled(
+ TelephonyManager.DATA_ENABLED_REASON_USER, false, mContext.getOpPackageName());
+ processAllMessages();
+
+ // Everything should be disconnected.
+ verifyAllDataDisconnected();
}
@Test
@@ -3869,6 +3902,84 @@ public class DataNetworkControllerTest extends TelephonyTest {
}
@Test
+ public void testHandoverDataNetworkRoamingOos() throws Exception {
+ testSetupImsDataNetwork();
+ // Configured handover is disallowed at Roaming.
+ mCarrierConfig.putStringArray(
+ CarrierConfigManager.KEY_IWLAN_HANDOVER_POLICY_STRING_ARRAY,
+ new String[]{
+ "source=GERAN|UTRAN|EUTRAN|NGRAN|IWLAN|UNKNOWN, "
+ + "target=GERAN|UTRAN|EUTRAN|NGRAN|IWLAN, roaming=true, "
+ + "type=disallowed, capabilities=IMS"
+ });
+ carrierConfigChanged();
+ DataNetwork dataNetwork = getDataNetworks().get(0);
+ //Enter ROAMING
+ serviceStateChanged(TelephonyManager.NETWORK_TYPE_LTE,
+ NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING);
+ updateServiceStateForDatatNetwork(TelephonyManager.NETWORK_TYPE_LTE,
+ NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING, dataNetwork);
+ //OOS
+ serviceStateChanged(TelephonyManager.NETWORK_TYPE_UNKNOWN,
+ NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING);
+ updateServiceStateForDatatNetwork(TelephonyManager.NETWORK_TYPE_UNKNOWN,
+ NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING,
+ dataNetwork);
+
+ updateTransport(NetworkCapabilities.NET_CAPABILITY_IMS,
+ AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
+
+ // Verify IMS network was torn down on source first.
+ verify(mMockedWwanDataServiceManager).deactivateDataCall(anyInt(),
+ eq(DataService.REQUEST_REASON_NORMAL), any(Message.class));
+
+ // Verify that IWLAN is brought up again on IWLAN.
+ verify(mMockedWlanDataServiceManager).setupDataCall(anyInt(),
+ any(DataProfile.class), anyBoolean(), anyBoolean(),
+ eq(DataService.REQUEST_REASON_NORMAL), any(), anyInt(), any(), any(), anyBoolean(),
+ any(Message.class));
+
+ DataNetwork dataNetworkIwlan = getDataNetworks().get(0);
+ assertThat(dataNetworkIwlan.getTransport()).isEqualTo(
+ AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
+ }
+
+ private void updateServiceStateForDatatNetwork(@Annotation.NetworkType int networkType,
+ @NetworkRegistrationInfo.RegistrationState int regState, DataNetwork dataNetwork) {
+ ServiceState ss = new ServiceState();
+ ss.addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setAccessNetworkTechnology(networkType)
+ .setRegistrationState(regState)
+ .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+ .setDataSpecificInfo(null)
+ .build());
+
+ ss.addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WLAN)
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_IWLAN)
+ .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
+ .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+ .build());
+
+ ss.addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setAccessNetworkTechnology(networkType)
+ .setRegistrationState(regState)
+ .setDomain(NetworkRegistrationInfo.DOMAIN_CS)
+ .build());
+ ss.setDataRoamingFromRegistration(regState
+ == NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING);
+ doReturn(ss).when(mSST).getServiceState();
+ doReturn(ss).when(mPhone).getServiceState();
+
+ if (dataNetwork != null) {
+ dataNetwork.obtainMessage(9/*EVENT_SERVICE_STATE_CHANGED*/).sendToTarget();
+ processAllMessages();
+ }
+ }
+
+ @Test
public void testHandoverDataNetworkSourceOosNoUnknownRule() throws Exception {
testSetupImsDataNetwork();
// Configured handover is allowed from OOS to 4G/5G/IWLAN.