Merge "Fix flaky test for ConnectivityServiceTest#testPartialConnectivity"
This commit is contained in:
@@ -498,7 +498,6 @@ public class ConnectivityServiceTest {
|
|||||||
try {
|
try {
|
||||||
doAnswer(validateAnswer).when(mNetworkMonitor).notifyNetworkConnected();
|
doAnswer(validateAnswer).when(mNetworkMonitor).notifyNetworkConnected();
|
||||||
doAnswer(validateAnswer).when(mNetworkMonitor).forceReevaluation(anyInt());
|
doAnswer(validateAnswer).when(mNetworkMonitor).forceReevaluation(anyInt());
|
||||||
doAnswer(validateAnswer).when(mNetworkMonitor).setAcceptPartialConnectivity();
|
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
fail(e.getMessage());
|
fail(e.getMessage());
|
||||||
}
|
}
|
||||||
@@ -2553,8 +2552,7 @@ public class ConnectivityServiceTest {
|
|||||||
verifyActiveNetwork(TRANSPORT_CELLULAR);
|
verifyActiveNetwork(TRANSPORT_CELLULAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(b/128426024): deflake and re-enable
|
@Test
|
||||||
// @Test
|
|
||||||
public void testPartialConnectivity() {
|
public void testPartialConnectivity() {
|
||||||
// Register network callback.
|
// Register network callback.
|
||||||
NetworkRequest request = new NetworkRequest.Builder()
|
NetworkRequest request = new NetworkRequest.Builder()
|
||||||
@@ -2578,20 +2576,24 @@ public class ConnectivityServiceTest {
|
|||||||
assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
||||||
callback.assertNoCallback();
|
callback.assertNoCallback();
|
||||||
|
|
||||||
|
// With HTTPS probe disabled, NetworkMonitor should pass the network validation with http
|
||||||
|
// probe.
|
||||||
|
mWiFiNetworkAgent.setNetworkValid();
|
||||||
// If the user chooses yes to use this partial connectivity wifi, switch the default
|
// If the user chooses yes to use this partial connectivity wifi, switch the default
|
||||||
// network to wifi and check if wifi becomes valid or not.
|
// network to wifi and check if wifi becomes valid or not.
|
||||||
mCm.setAcceptPartialConnectivity(mWiFiNetworkAgent.getNetwork(), true /* accept */,
|
mCm.setAcceptPartialConnectivity(mWiFiNetworkAgent.getNetwork(), true /* accept */,
|
||||||
false /* always */);
|
false /* always */);
|
||||||
// With https probe disabled, NetworkMonitor should pass the network validation with http
|
// If user accepts partial connectivity network,
|
||||||
// probe.
|
// NetworkMonitor#setAcceptPartialConnectivity() should be called too.
|
||||||
mWiFiNetworkAgent.setNetworkValid();
|
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
try {
|
try {
|
||||||
verify(mWiFiNetworkAgent.mNetworkMonitor,
|
verify(mWiFiNetworkAgent.mNetworkMonitor, times(1)).setAcceptPartialConnectivity();
|
||||||
timeout(TIMEOUT_MS).times(1)).setAcceptPartialConnectivity();
|
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
fail(e.getMessage());
|
fail(e.getMessage());
|
||||||
}
|
}
|
||||||
|
// Need a trigger point to let NetworkMonitor tell ConnectivityService that network is
|
||||||
|
// validated.
|
||||||
|
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
|
||||||
callback.expectCallback(CallbackState.LOSING, mCellNetworkAgent);
|
callback.expectCallback(CallbackState.LOSING, mCellNetworkAgent);
|
||||||
NetworkCapabilities nc = callback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED,
|
NetworkCapabilities nc = callback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED,
|
||||||
mWiFiNetworkAgent);
|
mWiFiNetworkAgent);
|
||||||
@@ -2621,6 +2623,15 @@ public class ConnectivityServiceTest {
|
|||||||
// acceptUnvalidated is also used as setting for accepting partial networks.
|
// acceptUnvalidated is also used as setting for accepting partial networks.
|
||||||
mWiFiNetworkAgent.explicitlySelected(true /* acceptUnvalidated */);
|
mWiFiNetworkAgent.explicitlySelected(true /* acceptUnvalidated */);
|
||||||
mWiFiNetworkAgent.connect(true);
|
mWiFiNetworkAgent.connect(true);
|
||||||
|
// If user accepted partial connectivity network before,
|
||||||
|
// NetworkMonitor#setAcceptPartialConnectivity() will be called in
|
||||||
|
// ConnectivityService#updateNetworkInfo().
|
||||||
|
waitForIdle();
|
||||||
|
try {
|
||||||
|
verify(mWiFiNetworkAgent.mNetworkMonitor, times(1)).setAcceptPartialConnectivity();
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
fail(e.getMessage());
|
||||||
|
}
|
||||||
callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
|
callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
|
||||||
callback.expectCallback(CallbackState.LOSING, mCellNetworkAgent);
|
callback.expectCallback(CallbackState.LOSING, mCellNetworkAgent);
|
||||||
nc = callback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
|
nc = callback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
|
||||||
@@ -2635,23 +2646,33 @@ public class ConnectivityServiceTest {
|
|||||||
// NET_CAPABILITY_PARTIAL_CONNECTIVITY.
|
// NET_CAPABILITY_PARTIAL_CONNECTIVITY.
|
||||||
mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI);
|
mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI);
|
||||||
mWiFiNetworkAgent.explicitlySelected(true /* acceptUnvalidated */);
|
mWiFiNetworkAgent.explicitlySelected(true /* acceptUnvalidated */);
|
||||||
|
// Current design cannot send multi-testResult from NetworkMonitor to ConnectivityService.
|
||||||
|
// So, if user accepts partial connectivity, NetworkMonitor will send PARTIAL_CONNECTIVITY
|
||||||
|
// to ConnectivityService first then send VALID. Once NetworkMonitor support
|
||||||
|
// multi-testResult, this test case also need to be changed to meet the new design.
|
||||||
mWiFiNetworkAgent.connectWithPartialConnectivity();
|
mWiFiNetworkAgent.connectWithPartialConnectivity();
|
||||||
callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
|
// If user accepted partial connectivity network before,
|
||||||
// TODO: If the user accepted partial connectivity, we shouldn't switch to wifi until
|
// NetworkMonitor#setAcceptPartialConnectivity() will be called in
|
||||||
// NetworkMonitor detects partial connectivity
|
// ConnectivityService#updateNetworkInfo().
|
||||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
|
||||||
mWiFiNetworkAgent.setNetworkValid();
|
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
try {
|
try {
|
||||||
verify(mWiFiNetworkAgent.mNetworkMonitor,
|
verify(mWiFiNetworkAgent.mNetworkMonitor, times(1)).setAcceptPartialConnectivity();
|
||||||
timeout(TIMEOUT_MS).times(1)).setAcceptPartialConnectivity();
|
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
fail(e.getMessage());
|
fail(e.getMessage());
|
||||||
}
|
}
|
||||||
|
callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
|
||||||
callback.expectCallback(CallbackState.LOSING, mCellNetworkAgent);
|
callback.expectCallback(CallbackState.LOSING, mCellNetworkAgent);
|
||||||
callback.expectCapabilitiesWith(NET_CAPABILITY_PARTIAL_CONNECTIVITY, mWiFiNetworkAgent);
|
// TODO: If the user accepted partial connectivity, we shouldn't switch to wifi until
|
||||||
// Wifi should be the default network.
|
// NetworkMonitor detects partial connectivity
|
||||||
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
|
||||||
|
callback.expectCapabilitiesWith(NET_CAPABILITY_PARTIAL_CONNECTIVITY, mWiFiNetworkAgent);
|
||||||
|
mWiFiNetworkAgent.setNetworkValid();
|
||||||
|
// Need a trigger point to let NetworkMonitor tell ConnectivityService that network is
|
||||||
|
// validated.
|
||||||
|
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
|
||||||
|
callback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
|
||||||
|
mWiFiNetworkAgent.disconnect();
|
||||||
|
callback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user