Code cleanup on EthernetNetworkFactoryTest
Code cleanup on EthernetNetworkFactoryTest. Bug: 210485380 Test: atest EthernetServiceTests: com.android.server.ethernet.EthernetNetworkFactoryTest Change-Id: I38c568d0760e4273f1ca8540bac268f07876b67f
This commit is contained in:
@@ -64,11 +64,11 @@ import org.mockito.MockitoAnnotations;
|
|||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
@SmallTest
|
@SmallTest
|
||||||
public class EthernetNetworkFactoryTest {
|
public class EthernetNetworkFactoryTest {
|
||||||
private TestLooper mLooper = new TestLooper();
|
private static final String TEST_IFACE = "test123";
|
||||||
|
private final TestLooper mLooper = new TestLooper();
|
||||||
private Handler mHandler;
|
private Handler mHandler;
|
||||||
private EthernetNetworkFactory mNetFactory = null;
|
private EthernetNetworkFactory mNetFactory = null;
|
||||||
private IpClientCallbacks mIpClientCallbacks;
|
private IpClientCallbacks mIpClientCallbacks;
|
||||||
private int mNetworkRequestCount = 0;
|
|
||||||
@Mock private Context mContext;
|
@Mock private Context mContext;
|
||||||
@Mock private Resources mResources;
|
@Mock private Resources mResources;
|
||||||
@Mock private EthernetNetworkFactory.Dependencies mDeps;
|
@Mock private EthernetNetworkFactory.Dependencies mDeps;
|
||||||
@@ -79,10 +79,7 @@ public class EthernetNetworkFactoryTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
mHandler = new Handler(mLooper.getLooper());
|
mHandler = new Handler(mLooper.getLooper());
|
||||||
mNetworkRequestCount = 0;
|
|
||||||
|
|
||||||
mNetFactory = new EthernetNetworkFactory(mHandler, mContext, createDefaultFilterCaps(),
|
mNetFactory = new EthernetNetworkFactory(mHandler, mContext, createDefaultFilterCaps(),
|
||||||
mDeps);
|
mDeps);
|
||||||
|
|
||||||
@@ -129,10 +126,24 @@ public class EthernetNetworkFactoryTest {
|
|||||||
}).when(mIpClient).shutdown();
|
}).when(mIpClient).shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void triggerOnProvisioningSuccess() {
|
||||||
|
mIpClientCallbacks.onProvisioningSuccess(new LinkProperties());
|
||||||
|
mLooper.dispatchAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void triggerOnProvisioningFailure() {
|
||||||
|
mIpClientCallbacks.onProvisioningFailure(new LinkProperties());
|
||||||
|
mLooper.dispatchAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void triggerOnReachabilityLost() {
|
||||||
|
mIpClientCallbacks.onReachabilityLost("ReachabilityLost");
|
||||||
|
mLooper.dispatchAll();
|
||||||
|
}
|
||||||
|
|
||||||
private void setupContext() {
|
private void setupContext() {
|
||||||
when(mContext.getResources()).thenReturn(mResources);
|
when(mContext.getResources()).thenReturn(mResources);
|
||||||
when(mResources.getString(R.string.config_ethernet_tcp_buffers)).thenReturn(
|
when(mResources.getString(R.string.config_ethernet_tcp_buffers)).thenReturn("");
|
||||||
"524288,1048576,3145728,524288,1048576,2097152");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -184,8 +195,7 @@ public class EthernetNetworkFactoryTest {
|
|||||||
mNetFactory.addInterface(iface, iface, createInterfaceCapsBuilder(transportType).build(),
|
mNetFactory.addInterface(iface, iface, createInterfaceCapsBuilder(transportType).build(),
|
||||||
createDefaultIpConfig());
|
createDefaultIpConfig());
|
||||||
assertTrue(mNetFactory.updateInterfaceLinkState(iface, true));
|
assertTrue(mNetFactory.updateInterfaceLinkState(iface, true));
|
||||||
verify(mDeps).makeIpClient(any(Context.class), anyString(), any());
|
verifyStart();
|
||||||
verify(mIpClient).startProvisioning(any());
|
|
||||||
clearInvocations(mDeps);
|
clearInvocations(mDeps);
|
||||||
clearInvocations(mIpClient);
|
clearInvocations(mIpClient);
|
||||||
}
|
}
|
||||||
@@ -197,18 +207,23 @@ public class EthernetNetworkFactoryTest {
|
|||||||
ConnectivityManager.TYPE_ETHERNET);
|
ConnectivityManager.TYPE_ETHERNET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void createVerifyAndRemoveProvisionedInterface(final int transportType,
|
||||||
|
final int expectedLegacyType) throws Exception {
|
||||||
|
createAndVerifyProvisionedInterface(TEST_IFACE, transportType,
|
||||||
|
expectedLegacyType);
|
||||||
|
mNetFactory.removeInterface(TEST_IFACE);
|
||||||
|
}
|
||||||
|
|
||||||
private void createAndVerifyProvisionedInterface(
|
private void createAndVerifyProvisionedInterface(
|
||||||
@NonNull final String iface, final int transportType, final int expectedLegacyType)
|
@NonNull final String iface, final int transportType, final int expectedLegacyType)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
createInterfaceUndergoingProvisioning(iface, transportType);
|
createInterfaceUndergoingProvisioning(iface, transportType);
|
||||||
mIpClientCallbacks.onProvisioningSuccess(new LinkProperties());
|
triggerOnProvisioningSuccess();
|
||||||
mLooper.dispatchAll();
|
|
||||||
// provisioning succeeded, verify that the network agent is created, registered, marked
|
// provisioning succeeded, verify that the network agent is created, registered, marked
|
||||||
// as connected and legacy type are correctly set.
|
// as connected and legacy type are correctly set.
|
||||||
verify(mDeps).makeEthernetNetworkAgent(any(), any(), any(), any(),
|
verify(mDeps).makeEthernetNetworkAgent(any(), any(), any(), any(),
|
||||||
argThat(x -> x.getLegacyType() == expectedLegacyType), any(), any());
|
argThat(x -> x.getLegacyType() == expectedLegacyType), any(), any());
|
||||||
verify(mNetworkAgent).register();
|
verifyNetworkAgentRegistersAndConnects();
|
||||||
verify(mNetworkAgent).markConnected();
|
|
||||||
clearInvocations(mDeps);
|
clearInvocations(mDeps);
|
||||||
clearInvocations(mNetworkAgent);
|
clearInvocations(mNetworkAgent);
|
||||||
}
|
}
|
||||||
@@ -228,8 +243,7 @@ public class EthernetNetworkFactoryTest {
|
|||||||
verify(mNetworkAgent, never()).register();
|
verify(mNetworkAgent, never()).register();
|
||||||
|
|
||||||
mNetFactory.releaseNetworkFor(createDefaultRequest());
|
mNetFactory.releaseNetworkFor(createDefaultRequest());
|
||||||
verify(mIpClient).shutdown();
|
verifyStop();
|
||||||
verify(mNetworkAgent).unregister();
|
|
||||||
|
|
||||||
clearInvocations(mIpClient);
|
clearInvocations(mIpClient);
|
||||||
clearInvocations(mNetworkAgent);
|
clearInvocations(mNetworkAgent);
|
||||||
@@ -237,7 +251,7 @@ public class EthernetNetworkFactoryTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAcceptRequest() throws Exception {
|
public void testAcceptRequest() throws Exception {
|
||||||
createInterfaceUndergoingProvisioning("eth0");
|
createInterfaceUndergoingProvisioning(TEST_IFACE);
|
||||||
assertTrue(mNetFactory.acceptRequest(createDefaultRequest()));
|
assertTrue(mNetFactory.acceptRequest(createDefaultRequest()));
|
||||||
|
|
||||||
NetworkRequest wifiRequest = createDefaultRequestBuilder()
|
NetworkRequest wifiRequest = createDefaultRequestBuilder()
|
||||||
@@ -248,27 +262,23 @@ public class EthernetNetworkFactoryTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateInterfaceLinkStateForActiveProvisioningInterface() throws Exception {
|
public void testUpdateInterfaceLinkStateForActiveProvisioningInterface() throws Exception {
|
||||||
String iface = "eth0";
|
createInterfaceUndergoingProvisioning(TEST_IFACE);
|
||||||
createInterfaceUndergoingProvisioning(iface);
|
|
||||||
// verify that the IpClient gets shut down when interface state changes to down.
|
// verify that the IpClient gets shut down when interface state changes to down.
|
||||||
assertTrue(mNetFactory.updateInterfaceLinkState(iface, false));
|
assertTrue(mNetFactory.updateInterfaceLinkState(TEST_IFACE, false));
|
||||||
verify(mIpClient).shutdown();
|
verify(mIpClient).shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateInterfaceLinkStateForProvisionedInterface() throws Exception {
|
public void testUpdateInterfaceLinkStateForProvisionedInterface() throws Exception {
|
||||||
String iface = "eth0";
|
createAndVerifyProvisionedInterface(TEST_IFACE);
|
||||||
createAndVerifyProvisionedInterface(iface);
|
assertTrue(mNetFactory.updateInterfaceLinkState(TEST_IFACE, false));
|
||||||
assertTrue(mNetFactory.updateInterfaceLinkState(iface, false));
|
verifyStop();
|
||||||
verify(mIpClient).shutdown();
|
|
||||||
verify(mNetworkAgent).unregister();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateInterfaceLinkStateForUnprovisionedInterface() throws Exception {
|
public void testUpdateInterfaceLinkStateForUnprovisionedInterface() throws Exception {
|
||||||
String iface = "eth0";
|
createUnprovisionedInterface(TEST_IFACE);
|
||||||
createUnprovisionedInterface(iface);
|
assertTrue(mNetFactory.updateInterfaceLinkState(TEST_IFACE, false));
|
||||||
assertTrue(mNetFactory.updateInterfaceLinkState(iface, false));
|
|
||||||
// There should not be an active IPClient or NetworkAgent.
|
// There should not be an active IPClient or NetworkAgent.
|
||||||
verify(mDeps, never()).makeIpClient(any(), any(), any());
|
verify(mDeps, never()).makeIpClient(any(), any(), any());
|
||||||
verify(mDeps, never())
|
verify(mDeps, never())
|
||||||
@@ -284,75 +294,64 @@ public class EthernetNetworkFactoryTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNeedNetworkForOnProvisionedInterface() throws Exception {
|
public void testNeedNetworkForOnProvisionedInterface() throws Exception {
|
||||||
createAndVerifyProvisionedInterface("eth0");
|
createAndVerifyProvisionedInterface(TEST_IFACE);
|
||||||
mNetFactory.needNetworkFor(createDefaultRequest());
|
mNetFactory.needNetworkFor(createDefaultRequest());
|
||||||
verify(mIpClient, never()).startProvisioning(any());
|
verify(mIpClient, never()).startProvisioning(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNeedNetworkForOnUnprovisionedInterface() throws Exception {
|
public void testNeedNetworkForOnUnprovisionedInterface() throws Exception {
|
||||||
createUnprovisionedInterface("eth0");
|
createUnprovisionedInterface(TEST_IFACE);
|
||||||
mNetFactory.needNetworkFor(createDefaultRequest());
|
mNetFactory.needNetworkFor(createDefaultRequest());
|
||||||
verify(mIpClient).startProvisioning(any());
|
verify(mIpClient).startProvisioning(any());
|
||||||
|
|
||||||
mIpClientCallbacks.onProvisioningSuccess(new LinkProperties());
|
triggerOnProvisioningSuccess();
|
||||||
mLooper.dispatchAll();
|
verifyNetworkAgentRegistersAndConnects();
|
||||||
verify(mNetworkAgent).register();
|
|
||||||
verify(mNetworkAgent).markConnected();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNeedNetworkForOnInterfaceUndergoingProvisioning() throws Exception {
|
public void testNeedNetworkForOnInterfaceUndergoingProvisioning() throws Exception {
|
||||||
createInterfaceUndergoingProvisioning("eth0");
|
createInterfaceUndergoingProvisioning(TEST_IFACE);
|
||||||
mNetFactory.needNetworkFor(createDefaultRequest());
|
mNetFactory.needNetworkFor(createDefaultRequest());
|
||||||
verify(mIpClient, never()).startProvisioning(any());
|
verify(mIpClient, never()).startProvisioning(any());
|
||||||
|
|
||||||
mIpClientCallbacks.onProvisioningSuccess(new LinkProperties());
|
triggerOnProvisioningSuccess();
|
||||||
mLooper.dispatchAll();
|
verifyNetworkAgentRegistersAndConnects();
|
||||||
verify(mNetworkAgent).register();
|
|
||||||
verify(mNetworkAgent).markConnected();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProvisioningLoss() throws Exception {
|
public void testProvisioningLoss() throws Exception {
|
||||||
String iface = "eth0";
|
when(mDeps.getNetworkInterfaceByName(TEST_IFACE)).thenReturn(mInterfaceParams);
|
||||||
when(mDeps.getNetworkInterfaceByName(iface)).thenReturn(mInterfaceParams);
|
createAndVerifyProvisionedInterface(TEST_IFACE);
|
||||||
createAndVerifyProvisionedInterface(iface);
|
|
||||||
|
|
||||||
mIpClientCallbacks.onProvisioningFailure(new LinkProperties());
|
triggerOnProvisioningFailure();
|
||||||
mLooper.dispatchAll();
|
verifyStop();
|
||||||
verify(mIpClient).shutdown();
|
|
||||||
verify(mNetworkAgent).unregister();
|
|
||||||
// provisioning loss should trigger a retry, since the interface is still there
|
// provisioning loss should trigger a retry, since the interface is still there
|
||||||
verify(mIpClient).startProvisioning(any());
|
verify(mIpClient).startProvisioning(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProvisioningLossForDisappearedInterface() throws Exception {
|
public void testProvisioningLossForDisappearedInterface() throws Exception {
|
||||||
String iface = "eth0";
|
|
||||||
// mocked method returns null by default, but just to be explicit in the test:
|
// mocked method returns null by default, but just to be explicit in the test:
|
||||||
when(mDeps.getNetworkInterfaceByName(eq(iface))).thenReturn(null);
|
when(mDeps.getNetworkInterfaceByName(eq(TEST_IFACE))).thenReturn(null);
|
||||||
|
|
||||||
createAndVerifyProvisionedInterface(iface);
|
createAndVerifyProvisionedInterface(TEST_IFACE);
|
||||||
mIpClientCallbacks.onProvisioningFailure(new LinkProperties());
|
triggerOnProvisioningFailure();
|
||||||
mLooper.dispatchAll();
|
verifyStop();
|
||||||
verify(mIpClient).shutdown();
|
|
||||||
verify(mNetworkAgent).unregister();
|
|
||||||
// the interface disappeared and getNetworkInterfaceByName returns null, we should not retry
|
// the interface disappeared and getNetworkInterfaceByName returns null, we should not retry
|
||||||
verify(mIpClient, never()).startProvisioning(any());
|
verify(mIpClient, never()).startProvisioning(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIpClientIsNotStartedWhenLinkIsDown() throws Exception {
|
public void testIpClientIsNotStartedWhenLinkIsDown() throws Exception {
|
||||||
String iface = "eth0";
|
createUnprovisionedInterface(TEST_IFACE);
|
||||||
createUnprovisionedInterface(iface);
|
mNetFactory.updateInterfaceLinkState(TEST_IFACE, false);
|
||||||
mNetFactory.updateInterfaceLinkState(iface, false);
|
|
||||||
|
|
||||||
mNetFactory.needNetworkFor(createDefaultRequest());
|
mNetFactory.needNetworkFor(createDefaultRequest());
|
||||||
|
|
||||||
NetworkRequest specificNetRequest = new NetworkRequest.Builder()
|
NetworkRequest specificNetRequest = new NetworkRequest.Builder()
|
||||||
.addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET)
|
.addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET)
|
||||||
.setNetworkSpecifier(new EthernetNetworkSpecifier(iface))
|
.setNetworkSpecifier(new EthernetNetworkSpecifier(TEST_IFACE))
|
||||||
.build();
|
.build();
|
||||||
mNetFactory.needNetworkFor(specificNetRequest);
|
mNetFactory.needNetworkFor(specificNetRequest);
|
||||||
|
|
||||||
@@ -363,7 +362,7 @@ public class EthernetNetworkFactoryTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLinkPropertiesChanged() throws Exception {
|
public void testLinkPropertiesChanged() throws Exception {
|
||||||
createAndVerifyProvisionedInterface("eth0");
|
createAndVerifyProvisionedInterface(TEST_IFACE);
|
||||||
|
|
||||||
LinkProperties lp = new LinkProperties();
|
LinkProperties lp = new LinkProperties();
|
||||||
mIpClientCallbacks.onLinkPropertiesChange(lp);
|
mIpClientCallbacks.onLinkPropertiesChange(lp);
|
||||||
@@ -373,30 +372,26 @@ public class EthernetNetworkFactoryTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNetworkUnwanted() throws Exception {
|
public void testNetworkUnwanted() throws Exception {
|
||||||
createAndVerifyProvisionedInterface("eth0");
|
createAndVerifyProvisionedInterface(TEST_IFACE);
|
||||||
|
|
||||||
mNetworkAgent.getCallbacks().onNetworkUnwanted();
|
mNetworkAgent.getCallbacks().onNetworkUnwanted();
|
||||||
mLooper.dispatchAll();
|
mLooper.dispatchAll();
|
||||||
verify(mIpClient).shutdown();
|
verifyStop();
|
||||||
verify(mNetworkAgent).unregister();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNetworkUnwantedWithStaleNetworkAgent() throws Exception {
|
public void testNetworkUnwantedWithStaleNetworkAgent() throws Exception {
|
||||||
String iface = "eth0";
|
|
||||||
// ensures provisioning is restarted after provisioning loss
|
// ensures provisioning is restarted after provisioning loss
|
||||||
when(mDeps.getNetworkInterfaceByName(iface)).thenReturn(mInterfaceParams);
|
when(mDeps.getNetworkInterfaceByName(TEST_IFACE)).thenReturn(mInterfaceParams);
|
||||||
createAndVerifyProvisionedInterface(iface);
|
createAndVerifyProvisionedInterface(TEST_IFACE);
|
||||||
|
|
||||||
EthernetNetworkAgent.Callbacks oldCbs = mNetworkAgent.getCallbacks();
|
EthernetNetworkAgent.Callbacks oldCbs = mNetworkAgent.getCallbacks();
|
||||||
// replace network agent in EthernetNetworkFactory
|
// replace network agent in EthernetNetworkFactory
|
||||||
// Loss of provisioning will restart the ip client and network agent.
|
// Loss of provisioning will restart the ip client and network agent.
|
||||||
mIpClientCallbacks.onProvisioningFailure(new LinkProperties());
|
triggerOnProvisioningFailure();
|
||||||
mLooper.dispatchAll();
|
|
||||||
verify(mDeps).makeIpClient(any(), any(), any());
|
verify(mDeps).makeIpClient(any(), any(), any());
|
||||||
|
|
||||||
mIpClientCallbacks.onProvisioningSuccess(new LinkProperties());
|
triggerOnProvisioningSuccess();
|
||||||
mLooper.dispatchAll();
|
|
||||||
verify(mDeps).makeEthernetNetworkAgent(any(), any(), any(), any(), any(), any(), any());
|
verify(mDeps).makeEthernetNetworkAgent(any(), any(), any(), any(), any(), any(), any());
|
||||||
|
|
||||||
// verify that unwanted is ignored
|
// verify that unwanted is ignored
|
||||||
@@ -409,45 +404,47 @@ public class EthernetNetworkFactoryTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTransportOverrideIsCorrectlySet() throws Exception {
|
public void testTransportOverrideIsCorrectlySet() throws Exception {
|
||||||
final String iface = "eth0";
|
|
||||||
// createProvisionedInterface() has verifications in place for transport override
|
// createProvisionedInterface() has verifications in place for transport override
|
||||||
// functionality which for EthernetNetworkFactory is network score and legacy type mappings.
|
// functionality which for EthernetNetworkFactory is network score and legacy type mappings.
|
||||||
createAndVerifyProvisionedInterface(iface, NetworkCapabilities.TRANSPORT_ETHERNET,
|
createVerifyAndRemoveProvisionedInterface(NetworkCapabilities.TRANSPORT_ETHERNET,
|
||||||
ConnectivityManager.TYPE_ETHERNET);
|
ConnectivityManager.TYPE_ETHERNET);
|
||||||
mNetFactory.removeInterface(iface);
|
createVerifyAndRemoveProvisionedInterface(NetworkCapabilities.TRANSPORT_BLUETOOTH,
|
||||||
createAndVerifyProvisionedInterface(iface, NetworkCapabilities.TRANSPORT_BLUETOOTH,
|
|
||||||
ConnectivityManager.TYPE_BLUETOOTH);
|
ConnectivityManager.TYPE_BLUETOOTH);
|
||||||
mNetFactory.removeInterface(iface);
|
createVerifyAndRemoveProvisionedInterface(NetworkCapabilities.TRANSPORT_WIFI,
|
||||||
createAndVerifyProvisionedInterface(iface, NetworkCapabilities.TRANSPORT_WIFI,
|
|
||||||
ConnectivityManager.TYPE_WIFI);
|
ConnectivityManager.TYPE_WIFI);
|
||||||
mNetFactory.removeInterface(iface);
|
createVerifyAndRemoveProvisionedInterface(NetworkCapabilities.TRANSPORT_CELLULAR,
|
||||||
createAndVerifyProvisionedInterface(iface, NetworkCapabilities.TRANSPORT_CELLULAR,
|
|
||||||
ConnectivityManager.TYPE_MOBILE);
|
ConnectivityManager.TYPE_MOBILE);
|
||||||
mNetFactory.removeInterface(iface);
|
createVerifyAndRemoveProvisionedInterface(NetworkCapabilities.TRANSPORT_LOWPAN,
|
||||||
createAndVerifyProvisionedInterface(iface, NetworkCapabilities.TRANSPORT_LOWPAN,
|
|
||||||
ConnectivityManager.TYPE_NONE);
|
ConnectivityManager.TYPE_NONE);
|
||||||
mNetFactory.removeInterface(iface);
|
createVerifyAndRemoveProvisionedInterface(NetworkCapabilities.TRANSPORT_WIFI_AWARE,
|
||||||
createAndVerifyProvisionedInterface(iface, NetworkCapabilities.TRANSPORT_WIFI_AWARE,
|
|
||||||
ConnectivityManager.TYPE_NONE);
|
ConnectivityManager.TYPE_NONE);
|
||||||
mNetFactory.removeInterface(iface);
|
createVerifyAndRemoveProvisionedInterface(NetworkCapabilities.TRANSPORT_TEST,
|
||||||
createAndVerifyProvisionedInterface(iface, NetworkCapabilities.TRANSPORT_TEST,
|
|
||||||
ConnectivityManager.TYPE_NONE);
|
ConnectivityManager.TYPE_NONE);
|
||||||
mNetFactory.removeInterface(iface);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testReachabilityLoss() throws Exception {
|
public void testReachabilityLoss() throws Exception {
|
||||||
String iface = "eth0";
|
createAndVerifyProvisionedInterface(TEST_IFACE);
|
||||||
createAndVerifyProvisionedInterface(iface);
|
|
||||||
|
|
||||||
mIpClientCallbacks.onReachabilityLost("ReachabilityLost");
|
triggerOnReachabilityLost();
|
||||||
mLooper.dispatchAll();
|
|
||||||
|
|
||||||
// Reachability loss should trigger a stop and start, since the interface is still there
|
// Reachability loss should trigger a stop and start, since the interface is still there
|
||||||
verify(mIpClient).shutdown();
|
verifyStop();
|
||||||
verify(mNetworkAgent).unregister();
|
verifyStart();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void verifyStart() throws Exception {
|
||||||
verify(mDeps).makeIpClient(any(Context.class), anyString(), any());
|
verify(mDeps).makeIpClient(any(Context.class), anyString(), any());
|
||||||
verify(mIpClient).startProvisioning(any());
|
verify(mIpClient).startProvisioning(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void verifyStop() throws Exception {
|
||||||
|
verify(mIpClient).shutdown();
|
||||||
|
verify(mNetworkAgent).unregister();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void verifyNetworkAgentRegistersAndConnects() {
|
||||||
|
verify(mNetworkAgent).register();
|
||||||
|
verify(mNetworkAgent).markConnected();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user