Unit test automation for Multi-Default Tracking
Unit test automation validating how multiple default networks are tracked within ConnectivityService when set by network preferences used with setOemNetworkPreference() API functionality. Bug: 178632672 Bug: 172347841 Bug: 170068946 Test: atest FrameworksNetTests Change-Id: Iae1935944214efaa8a21636c55e6d8be816275f7
This commit is contained in:
@@ -406,6 +406,8 @@ public class ConnectivityServiceTest {
|
|||||||
private QosCallbackMockHelper mQosCallbackMockHelper;
|
private QosCallbackMockHelper mQosCallbackMockHelper;
|
||||||
private QosCallbackTracker mQosCallbackTracker;
|
private QosCallbackTracker mQosCallbackTracker;
|
||||||
private VpnManagerService mVpnManagerService;
|
private VpnManagerService mVpnManagerService;
|
||||||
|
private TestNetworkCallback mDefaultNetworkCallback;
|
||||||
|
private TestNetworkCallback mSystemDefaultNetworkCallback;
|
||||||
|
|
||||||
// State variables required to emulate NetworkPolicyManagerService behaviour.
|
// State variables required to emulate NetworkPolicyManagerService behaviour.
|
||||||
private int mUidRules = RULE_NONE;
|
private int mUidRules = RULE_NONE;
|
||||||
@@ -1546,6 +1548,7 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
|
unregisterDefaultNetworkCallbacks();
|
||||||
setAlwaysOnNetworks(false);
|
setAlwaysOnNetworks(false);
|
||||||
if (mCellNetworkAgent != null) {
|
if (mCellNetworkAgent != null) {
|
||||||
mCellNetworkAgent.disconnect();
|
mCellNetworkAgent.disconnect();
|
||||||
@@ -9463,6 +9466,10 @@ public class ConnectivityServiceTest {
|
|||||||
fail("TOO_MANY_REQUESTS never thrown");
|
fail("TOO_MANY_REQUESTS never thrown");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private UidRange createUidRange(int userId) {
|
||||||
|
return UidRange.createForUser(UserHandle.of(userId));
|
||||||
|
}
|
||||||
|
|
||||||
private void mockGetApplicationInfo(@NonNull final String packageName, @NonNull final int uid)
|
private void mockGetApplicationInfo(@NonNull final String packageName, @NonNull final int uid)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
final ApplicationInfo applicationInfo = new ApplicationInfo();
|
final ApplicationInfo applicationInfo = new ApplicationInfo();
|
||||||
@@ -9797,6 +9804,54 @@ public class ConnectivityServiceTest {
|
|||||||
assertEquals(expectedPerAppNetwork, defaultNetwork);
|
assertEquals(expectedPerAppNetwork, defaultNetwork);
|
||||||
assertEquals(expectedOemRequestsSize, defaultRequest.mRequests.size());
|
assertEquals(expectedOemRequestsSize, defaultRequest.mRequests.size());
|
||||||
}
|
}
|
||||||
|
verifyMultipleDefaultCallbacks(expectedDefaultNetwork, expectedPerAppNetwork);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify default callbacks for 'available' fire as expected. This will only run if
|
||||||
|
* registerDefaultNetworkCallbacks() was executed prior and will only be different if the
|
||||||
|
* setOemNetworkPreference() per-app API was used for the current process.
|
||||||
|
* @param expectedSystemDefault the expected network for the system default.
|
||||||
|
* @param expectedPerAppDefault the expected network for the current process's default.
|
||||||
|
*/
|
||||||
|
private void verifyMultipleDefaultCallbacks(
|
||||||
|
@NonNull final Network expectedSystemDefault,
|
||||||
|
@NonNull final Network expectedPerAppDefault) {
|
||||||
|
if (null != mSystemDefaultNetworkCallback && null != expectedSystemDefault
|
||||||
|
&& mService.mNoServiceNetwork.network() != expectedSystemDefault) {
|
||||||
|
// getLastAvailableNetwork() is used as this method can be called successively with
|
||||||
|
// the same network to validate therefore expectAvailableThenValidatedCallbacks
|
||||||
|
// can't be used.
|
||||||
|
assertEquals(mSystemDefaultNetworkCallback.getLastAvailableNetwork(),
|
||||||
|
expectedSystemDefault);
|
||||||
|
}
|
||||||
|
if (null != mDefaultNetworkCallback && null != expectedPerAppDefault
|
||||||
|
&& mService.mNoServiceNetwork.network() != expectedPerAppDefault) {
|
||||||
|
assertEquals(mDefaultNetworkCallback.getLastAvailableNetwork(),
|
||||||
|
expectedPerAppDefault);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void registerDefaultNetworkCallbacks() {
|
||||||
|
// Using Manifest.permission.NETWORK_SETTINGS for registerSystemDefaultNetworkCallback()
|
||||||
|
mServiceContext.setPermission(
|
||||||
|
Manifest.permission.NETWORK_SETTINGS, PERMISSION_GRANTED);
|
||||||
|
mSystemDefaultNetworkCallback = new TestNetworkCallback();
|
||||||
|
mDefaultNetworkCallback = new TestNetworkCallback();
|
||||||
|
mCm.registerSystemDefaultNetworkCallback(mSystemDefaultNetworkCallback,
|
||||||
|
new Handler(ConnectivityThread.getInstanceLooper()));
|
||||||
|
mCm.registerDefaultNetworkCallback(mDefaultNetworkCallback);
|
||||||
|
mServiceContext.setPermission(
|
||||||
|
Manifest.permission.NETWORK_SETTINGS, PERMISSION_DENIED);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void unregisterDefaultNetworkCallbacks() {
|
||||||
|
if (null != mDefaultNetworkCallback) {
|
||||||
|
mCm.unregisterNetworkCallback(mDefaultNetworkCallback);
|
||||||
|
}
|
||||||
|
if (null != mSystemDefaultNetworkCallback) {
|
||||||
|
mCm.unregisterNetworkCallback(mSystemDefaultNetworkCallback);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupMultipleDefaultNetworksForOemNetworkPreferenceNotCurrentUidTest(
|
private void setupMultipleDefaultNetworksForOemNetworkPreferenceNotCurrentUidTest(
|
||||||
@@ -9880,6 +9935,7 @@ public class ConnectivityServiceTest {
|
|||||||
@OemNetworkPreferences.OemNetworkPreference final int networkPref =
|
@OemNetworkPreferences.OemNetworkPreference final int networkPref =
|
||||||
OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY;
|
OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY;
|
||||||
final int expectedOemPrefRequestSize = 1;
|
final int expectedOemPrefRequestSize = 1;
|
||||||
|
registerDefaultNetworkCallbacks();
|
||||||
|
|
||||||
// Setup the test process to use networkPref for their default network.
|
// Setup the test process to use networkPref for their default network.
|
||||||
setupMultipleDefaultNetworksForOemNetworkPreferenceCurrentUidTest(networkPref);
|
setupMultipleDefaultNetworksForOemNetworkPreferenceCurrentUidTest(networkPref);
|
||||||
@@ -9894,6 +9950,7 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
// Verify that the active network is correct
|
// Verify that the active network is correct
|
||||||
verifyActiveNetwork(TRANSPORT_ETHERNET);
|
verifyActiveNetwork(TRANSPORT_ETHERNET);
|
||||||
|
// default NCs will be unregistered in tearDown
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -9901,6 +9958,7 @@ public class ConnectivityServiceTest {
|
|||||||
@OemNetworkPreferences.OemNetworkPreference final int networkPref =
|
@OemNetworkPreferences.OemNetworkPreference final int networkPref =
|
||||||
OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY;
|
OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY;
|
||||||
final int expectedOemPrefRequestSize = 1;
|
final int expectedOemPrefRequestSize = 1;
|
||||||
|
registerDefaultNetworkCallbacks();
|
||||||
|
|
||||||
// Setup the test process to use networkPref for their default network.
|
// Setup the test process to use networkPref for their default network.
|
||||||
setupMultipleDefaultNetworksForOemNetworkPreferenceCurrentUidTest(networkPref);
|
setupMultipleDefaultNetworksForOemNetworkPreferenceCurrentUidTest(networkPref);
|
||||||
@@ -9921,6 +9979,7 @@ public class ConnectivityServiceTest {
|
|||||||
mEthernetNetworkAgent.getNetwork());
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
assertFalse(mCm.isActiveNetworkMetered());
|
assertFalse(mCm.isActiveNetworkMetered());
|
||||||
|
// default NCs will be unregistered in tearDown
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -10077,7 +10136,6 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the tracked default requests clear previous OEM requests on setOemNetworkPreference().
|
* Test the tracked default requests clear previous OEM requests on setOemNetworkPreference().
|
||||||
* @throws Exception
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testSetOemNetworkPreferenceClearPreviousOemValues() throws Exception {
|
public void testSetOemNetworkPreferenceClearPreviousOemValues() throws Exception {
|
||||||
@@ -10105,9 +10163,8 @@ public class ConnectivityServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test network priority for preference OEM_NETWORK_PREFERENCE_OEM_PAID following in order:
|
* Test network priority for preference OEM_NETWORK_PREFERENCE_OEM_PAID in the following order:
|
||||||
* NET_CAPABILITY_NOT_METERED -> NET_CAPABILITY_OEM_PAID -> fallback
|
* NET_CAPABILITY_NOT_METERED -> NET_CAPABILITY_OEM_PAID -> fallback
|
||||||
* @throws Exception
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testMultilayerForPreferenceOemPaidEvaluatesCorrectly()
|
public void testMultilayerForPreferenceOemPaidEvaluatesCorrectly()
|
||||||
@@ -10173,9 +10230,8 @@ public class ConnectivityServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test network priority for OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK following in order:
|
* Test network priority for OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK in the following order:
|
||||||
* NET_CAPABILITY_NOT_METERED -> NET_CAPABILITY_OEM_PAID
|
* NET_CAPABILITY_NOT_METERED -> NET_CAPABILITY_OEM_PAID
|
||||||
* @throws Exception
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testMultilayerForPreferenceOemPaidNoFallbackEvaluatesCorrectly()
|
public void testMultilayerForPreferenceOemPaidNoFallbackEvaluatesCorrectly()
|
||||||
@@ -10236,10 +10292,9 @@ public class ConnectivityServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test network priority for OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY following in order:
|
* Test network priority for OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY in the following order:
|
||||||
* NET_CAPABILITY_OEM_PAID
|
* NET_CAPABILITY_OEM_PAID
|
||||||
* This preference should only apply to OEM_PAID networks.
|
* This preference should only apply to OEM_PAID networks.
|
||||||
* @throws Exception
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testMultilayerForPreferenceOemPaidOnlyEvaluatesCorrectly()
|
public void testMultilayerForPreferenceOemPaidOnlyEvaluatesCorrectly()
|
||||||
@@ -10290,10 +10345,9 @@ public class ConnectivityServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test network priority for OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY following in order:
|
* Test network priority for OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY in the following order:
|
||||||
* NET_CAPABILITY_OEM_PRIVATE
|
* NET_CAPABILITY_OEM_PRIVATE
|
||||||
* This preference should only apply to OEM_PRIVATE networks.
|
* This preference should only apply to OEM_PRIVATE networks.
|
||||||
* @throws Exception
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testMultilayerForPreferenceOemPrivateOnlyEvaluatesCorrectly()
|
public void testMultilayerForPreferenceOemPrivateOnlyEvaluatesCorrectly()
|
||||||
@@ -10343,7 +10397,235 @@ public class ConnectivityServiceTest {
|
|||||||
true /* shouldDestroyNetwork */);
|
true /* shouldDestroyNetwork */);
|
||||||
}
|
}
|
||||||
|
|
||||||
private UidRange createUidRange(int userId) {
|
/**
|
||||||
return UidRange.createForUser(UserHandle.of(userId));
|
* Test network priority for preference OEM_NETWORK_PREFERENCE_OEM_PAID in the following order:
|
||||||
|
* NET_CAPABILITY_NOT_METERED -> NET_CAPABILITY_OEM_PAID -> fallback
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultipleDefaultNetworksTracksOemNetworkPreferenceOemPaidCorrectly()
|
||||||
|
throws Exception {
|
||||||
|
@OemNetworkPreferences.OemNetworkPreference final int networkPref =
|
||||||
|
OemNetworkPreferences.OEM_NETWORK_PREFERENCE_OEM_PAID;
|
||||||
|
setupMultipleDefaultNetworksForOemNetworkPreferenceCurrentUidTest(networkPref);
|
||||||
|
final int expectedDefaultRequestSize = 2;
|
||||||
|
final int expectedOemPrefRequestSize = 3;
|
||||||
|
registerDefaultNetworkCallbacks();
|
||||||
|
|
||||||
|
// The fallback as well as the OEM preference should now be tracked.
|
||||||
|
assertEquals(expectedDefaultRequestSize, mService.mDefaultNetworkRequests.size());
|
||||||
|
|
||||||
|
// Test lowest to highest priority requests.
|
||||||
|
// Bring up metered cellular. This will satisfy the fallback network.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_CELLULAR, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mCellNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Bring up ethernet with OEM_PAID. This will satisfy NET_CAPABILITY_OEM_PAID.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_ETHERNET, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Bring up unmetered Wi-Fi. This will satisfy NET_CAPABILITY_NOT_METERED.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_WIFI, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mWiFiNetworkAgent.getNetwork(),
|
||||||
|
mWiFiNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting unmetered Wi-Fi will put the pref on OEM_PAID and fallback on cellular.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_WIFI, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting cellular should keep OEM network on OEM_PAID and fallback will be null.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_CELLULAR, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
null,
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting OEM_PAID will put both on null as it is the last network.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_ETHERNET, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
null,
|
||||||
|
null);
|
||||||
|
|
||||||
|
// default NCs will be unregistered in tearDown
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test network priority for OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK in the following order:
|
||||||
|
* NET_CAPABILITY_NOT_METERED -> NET_CAPABILITY_OEM_PAID
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultipleDefaultNetworksTracksOemNetworkPreferenceOemPaidNoFallbackCorrectly()
|
||||||
|
throws Exception {
|
||||||
|
@OemNetworkPreferences.OemNetworkPreference final int networkPref =
|
||||||
|
OemNetworkPreferences.OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK;
|
||||||
|
setupMultipleDefaultNetworksForOemNetworkPreferenceCurrentUidTest(networkPref);
|
||||||
|
final int expectedDefaultRequestSize = 2;
|
||||||
|
final int expectedOemPrefRequestSize = 2;
|
||||||
|
registerDefaultNetworkCallbacks();
|
||||||
|
|
||||||
|
// The fallback as well as the OEM preference should now be tracked.
|
||||||
|
assertEquals(expectedDefaultRequestSize, mService.mDefaultNetworkRequests.size());
|
||||||
|
|
||||||
|
// Test lowest to highest priority requests.
|
||||||
|
// Bring up metered cellular. This will satisfy the fallback network but not the pref.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_CELLULAR, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mService.mNoServiceNetwork.network());
|
||||||
|
|
||||||
|
// Bring up ethernet with OEM_PAID. This will satisfy NET_CAPABILITY_OEM_PAID.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_ETHERNET, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Bring up unmetered Wi-Fi. This will satisfy NET_CAPABILITY_NOT_METERED.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_WIFI, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mWiFiNetworkAgent.getNetwork(),
|
||||||
|
mWiFiNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting unmetered Wi-Fi will put the OEM pref on OEM_PAID and fallback on cellular.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_WIFI, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting cellular should keep OEM network on OEM_PAID and fallback will be null.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_CELLULAR, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
null,
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting OEM_PAID puts the fallback on null and the pref on the disconnected net.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_ETHERNET, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
null,
|
||||||
|
mService.mNoServiceNetwork.network());
|
||||||
|
|
||||||
|
// default NCs will be unregistered in tearDown
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test network priority for OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY in the following order:
|
||||||
|
* NET_CAPABILITY_OEM_PAID
|
||||||
|
* This preference should only apply to OEM_PAID networks.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultipleDefaultNetworksTracksOemNetworkPreferenceOemPaidOnlyCorrectly()
|
||||||
|
throws Exception {
|
||||||
|
@OemNetworkPreferences.OemNetworkPreference final int networkPref =
|
||||||
|
OemNetworkPreferences.OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY;
|
||||||
|
setupMultipleDefaultNetworksForOemNetworkPreferenceCurrentUidTest(networkPref);
|
||||||
|
final int expectedDefaultRequestSize = 2;
|
||||||
|
final int expectedOemPrefRequestSize = 1;
|
||||||
|
registerDefaultNetworkCallbacks();
|
||||||
|
|
||||||
|
// The fallback as well as the OEM preference should now be tracked.
|
||||||
|
assertEquals(expectedDefaultRequestSize, mService.mDefaultNetworkRequests.size());
|
||||||
|
|
||||||
|
// Test lowest to highest priority requests.
|
||||||
|
// Bring up metered cellular. This will satisfy the fallback network.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_CELLULAR, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mService.mNoServiceNetwork.network());
|
||||||
|
|
||||||
|
// Bring up ethernet with OEM_PAID. This will satisfy NET_CAPABILITY_OEM_PAID.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_ETHERNET, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Bring up unmetered Wi-Fi. The OEM network shouldn't change, the fallback will take Wi-Fi.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_WIFI, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mWiFiNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting unmetered Wi-Fi shouldn't change the OEM network with fallback on cellular.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_WIFI, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting OEM_PAID will keep the fallback on cellular and nothing for OEM_PAID.
|
||||||
|
// OEM_PAID_ONLY not supporting a fallback now uses the disconnected network.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_ETHERNET, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mService.mNoServiceNetwork.network());
|
||||||
|
|
||||||
|
// Disconnecting cellular will put the fallback on null and the pref on disconnected.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_CELLULAR, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
null,
|
||||||
|
mService.mNoServiceNetwork.network());
|
||||||
|
|
||||||
|
// default NCs will be unregistered in tearDown
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test network priority for OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY in the following order:
|
||||||
|
* NET_CAPABILITY_OEM_PRIVATE
|
||||||
|
* This preference should only apply to OEM_PRIVATE networks.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultipleDefaultNetworksTracksOemNetworkPreferenceOemPrivateOnlyCorrectly()
|
||||||
|
throws Exception {
|
||||||
|
@OemNetworkPreferences.OemNetworkPreference final int networkPref =
|
||||||
|
OemNetworkPreferences.OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY;
|
||||||
|
setupMultipleDefaultNetworksForOemNetworkPreferenceCurrentUidTest(networkPref);
|
||||||
|
final int expectedDefaultRequestSize = 2;
|
||||||
|
final int expectedOemPrefRequestSize = 1;
|
||||||
|
registerDefaultNetworkCallbacks();
|
||||||
|
|
||||||
|
// The fallback as well as the OEM preference should now be tracked.
|
||||||
|
assertEquals(expectedDefaultRequestSize, mService.mDefaultNetworkRequests.size());
|
||||||
|
|
||||||
|
// Test lowest to highest priority requests.
|
||||||
|
// Bring up metered cellular. This will satisfy the fallback network.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_CELLULAR, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mService.mNoServiceNetwork.network());
|
||||||
|
|
||||||
|
// Bring up ethernet with OEM_PRIVATE. This will satisfy NET_CAPABILITY_OEM_PRIVATE.
|
||||||
|
startOemManagedNetwork(false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Bring up unmetered Wi-Fi. The OEM network shouldn't change, the fallback will take Wi-Fi.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_WIFI, true);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mWiFiNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting unmetered Wi-Fi shouldn't change the OEM network with fallback on cellular.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_WIFI, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mEthernetNetworkAgent.getNetwork());
|
||||||
|
|
||||||
|
// Disconnecting OEM_PRIVATE will keep the fallback on cellular.
|
||||||
|
// OEM_PRIVATE_ONLY not supporting a fallback now uses to the disconnected network.
|
||||||
|
stopOemManagedNetwork();
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
mCellNetworkAgent.getNetwork(),
|
||||||
|
mService.mNoServiceNetwork.network());
|
||||||
|
|
||||||
|
// Disconnecting cellular will put the fallback on null and pref on disconnected.
|
||||||
|
setOemNetworkPreferenceAgentConnected(TRANSPORT_CELLULAR, false);
|
||||||
|
verifyMultipleDefaultNetworksTracksCorrectly(expectedOemPrefRequestSize,
|
||||||
|
null,
|
||||||
|
mService.mNoServiceNetwork.network());
|
||||||
|
|
||||||
|
// default NCs will be unregistered in tearDown
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user