Add support for Nullable IpConfiguration
Test: atest EthernetServiceTests Change-Id: I6b415ffb2f5825a9dffda1366b60c1e0d26f4e64
This commit is contained in:
@@ -233,7 +233,8 @@ public class EthernetNetworkFactory extends NetworkFactory {
|
|||||||
* Update a network's configuration and restart it if necessary.
|
* Update a network's configuration and restart it if necessary.
|
||||||
*
|
*
|
||||||
* @param ifaceName the interface name of the network to be updated.
|
* @param ifaceName the interface name of the network to be updated.
|
||||||
* @param ipConfig the desired {@link IpConfiguration} for the given network.
|
* @param ipConfig the desired {@link IpConfiguration} for the given network or null. If
|
||||||
|
* {@code null} is passed, the existing IpConfiguration is not updated.
|
||||||
* @param capabilities the desired {@link NetworkCapabilities} for the given network. If
|
* @param capabilities the desired {@link NetworkCapabilities} for the given network. If
|
||||||
* {@code null} is passed, then the network's current
|
* {@code null} is passed, then the network's current
|
||||||
* {@link NetworkCapabilities} will be used in support of existing APIs as
|
* {@link NetworkCapabilities} will be used in support of existing APIs as
|
||||||
@@ -243,7 +244,7 @@ public class EthernetNetworkFactory extends NetworkFactory {
|
|||||||
*/
|
*/
|
||||||
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
|
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
|
||||||
protected void updateInterface(@NonNull final String ifaceName,
|
protected void updateInterface(@NonNull final String ifaceName,
|
||||||
@NonNull final IpConfiguration ipConfig,
|
@Nullable final IpConfiguration ipConfig,
|
||||||
@Nullable final NetworkCapabilities capabilities,
|
@Nullable final NetworkCapabilities capabilities,
|
||||||
@Nullable final IEthernetNetworkManagementListener listener) {
|
@Nullable final IEthernetNetworkManagementListener listener) {
|
||||||
if (!hasInterface(ifaceName)) {
|
if (!hasInterface(ifaceName)) {
|
||||||
@@ -499,7 +500,7 @@ public class EthernetNetworkFactory extends NetworkFactory {
|
|||||||
mLegacyType = getLegacyType(mCapabilities);
|
mLegacyType = getLegacyType(mCapabilities);
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateInterface(@NonNull final IpConfiguration ipConfig,
|
void updateInterface(@Nullable final IpConfiguration ipConfig,
|
||||||
@Nullable final NetworkCapabilities capabilities,
|
@Nullable final NetworkCapabilities capabilities,
|
||||||
@Nullable final IEthernetNetworkManagementListener listener) {
|
@Nullable final IEthernetNetworkManagementListener listener) {
|
||||||
if (DBG) {
|
if (DBG) {
|
||||||
@@ -510,7 +511,9 @@ public class EthernetNetworkFactory extends NetworkFactory {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
mIpConfig = ipConfig;
|
if (null != ipConfig){
|
||||||
|
mIpConfig = ipConfig;
|
||||||
|
}
|
||||||
if (null != capabilities) {
|
if (null != capabilities) {
|
||||||
setCapabilities(capabilities);
|
setCapabilities(capabilities);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -289,15 +289,20 @@ public class EthernetTracker {
|
|||||||
|
|
||||||
@VisibleForTesting(visibility = PACKAGE)
|
@VisibleForTesting(visibility = PACKAGE)
|
||||||
protected void updateConfiguration(@NonNull final String iface,
|
protected void updateConfiguration(@NonNull final String iface,
|
||||||
@NonNull final IpConfiguration ipConfig,
|
@Nullable final IpConfiguration ipConfig,
|
||||||
@Nullable final NetworkCapabilities capabilities,
|
@Nullable final NetworkCapabilities capabilities,
|
||||||
@Nullable final IEthernetNetworkManagementListener listener) {
|
@Nullable final IEthernetNetworkManagementListener listener) {
|
||||||
if (DBG) {
|
if (DBG) {
|
||||||
Log.i(TAG, "updateConfiguration, iface: " + iface + ", capabilities: " + capabilities
|
Log.i(TAG, "updateConfiguration, iface: " + iface + ", capabilities: " + capabilities
|
||||||
+ ", ipConfig: " + ipConfig);
|
+ ", ipConfig: " + ipConfig);
|
||||||
}
|
}
|
||||||
final IpConfiguration localIpConfig = new IpConfiguration(ipConfig);
|
|
||||||
writeIpConfiguration(iface, localIpConfig);
|
final IpConfiguration localIpConfig = ipConfig == null
|
||||||
|
? null : new IpConfiguration(ipConfig);
|
||||||
|
if (ipConfig != null) {
|
||||||
|
writeIpConfiguration(iface, localIpConfig);
|
||||||
|
}
|
||||||
|
|
||||||
if (null != capabilities) {
|
if (null != capabilities) {
|
||||||
mNetworkCapabilities.put(iface, capabilities);
|
mNetworkCapabilities.put(iface, capabilities);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -776,4 +776,28 @@ public class EthernetNetworkFactoryTest {
|
|||||||
verifyNoStopOrStart();
|
verifyNoStopOrStart();
|
||||||
assertFailedListener(listener, "can't be updated as it is not available");
|
assertFailedListener(listener, "can't be updated as it is not available");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateInterfaceWithNullIpConfiguration() throws Exception {
|
||||||
|
initEthernetNetworkFactory();
|
||||||
|
createAndVerifyProvisionedInterface(TEST_IFACE);
|
||||||
|
|
||||||
|
final IpConfiguration initialIpConfig = createStaticIpConfig();
|
||||||
|
mNetFactory.updateInterface(TEST_IFACE, initialIpConfig, null /*capabilities*/,
|
||||||
|
null /*listener*/);
|
||||||
|
triggerOnProvisioningSuccess();
|
||||||
|
verifyRestart(initialIpConfig);
|
||||||
|
|
||||||
|
// TODO: have verifyXyz functions clear invocations.
|
||||||
|
clearInvocations(mDeps);
|
||||||
|
clearInvocations(mIpClient);
|
||||||
|
clearInvocations(mNetworkAgent);
|
||||||
|
|
||||||
|
|
||||||
|
// verify that sending a null ipConfig does not update the current ipConfig.
|
||||||
|
mNetFactory.updateInterface(TEST_IFACE, null /*ipConfig*/, null /*capabilities*/,
|
||||||
|
null /*listener*/);
|
||||||
|
triggerOnProvisioningSuccess();
|
||||||
|
verifyRestart(initialIpConfig);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,10 @@ public class EthernetServiceImplTest {
|
|||||||
new EthernetNetworkUpdateRequest.Builder()
|
new EthernetNetworkUpdateRequest.Builder()
|
||||||
.setIpConfiguration(new IpConfiguration())
|
.setIpConfiguration(new IpConfiguration())
|
||||||
.build();
|
.build();
|
||||||
|
private static final EthernetNetworkUpdateRequest UPDATE_REQUEST_WITHOUT_IP_CONFIG =
|
||||||
|
new EthernetNetworkUpdateRequest.Builder()
|
||||||
|
.setNetworkCapabilities(new NetworkCapabilities.Builder().build())
|
||||||
|
.build();
|
||||||
private static final IEthernetNetworkManagementListener NULL_LISTENER = null;
|
private static final IEthernetNetworkManagementListener NULL_LISTENER = null;
|
||||||
private EthernetServiceImpl mEthernetServiceImpl;
|
private EthernetServiceImpl mEthernetServiceImpl;
|
||||||
@Mock private Context mContext;
|
@Mock private Context mContext;
|
||||||
@@ -275,6 +279,15 @@ public class EthernetServiceImplTest {
|
|||||||
eq(request.getNetworkCapabilities()), isNull());
|
eq(request.getNetworkCapabilities()), isNull());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateConfigurationAcceptsRequestWithNullIpConfiguration() {
|
||||||
|
mEthernetServiceImpl.updateConfiguration(TEST_IFACE, UPDATE_REQUEST_WITHOUT_IP_CONFIG,
|
||||||
|
NULL_LISTENER);
|
||||||
|
verify(mEthernetTracker).updateConfiguration(eq(TEST_IFACE),
|
||||||
|
eq(UPDATE_REQUEST_WITHOUT_IP_CONFIG.getIpConfiguration()),
|
||||||
|
eq(UPDATE_REQUEST_WITHOUT_IP_CONFIG.getNetworkCapabilities()), isNull());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateConfigurationRejectsInvalidTestRequest() {
|
public void testUpdateConfigurationRejectsInvalidTestRequest() {
|
||||||
enableTestInterface();
|
enableTestInterface();
|
||||||
|
|||||||
Reference in New Issue
Block a user