Validate or set the eth specifier on update Iface
When a calling the updateInterface API, if no eth specifier was set it would be removed not allowing follow-up network requests to request by ethernet specifier. This CL makes sure that the eth specifier is always set as expected when updateInterface is called by either validating the input or setting the specifier if the passed one is null. Bug: 236294399 Bug: 229207021 Test: atest FrameworksNetTests :com.android.server.ethernet.EthernetNetworkFactoryTest Change-Id: Ic05ca7fe4adaa94f79e59758569f7595ab4c4f54
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.server.ethernet;
|
||||
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_TEST;
|
||||
|
||||
import static org.junit.Assert.assertThrows;
|
||||
@@ -35,10 +36,12 @@ import android.Manifest;
|
||||
import android.annotation.NonNull;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.EthernetNetworkSpecifier;
|
||||
import android.net.EthernetNetworkUpdateRequest;
|
||||
import android.net.INetworkInterfaceOutcomeReceiver;
|
||||
import android.net.IpConfiguration;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.StringNetworkSpecifier;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
|
||||
@@ -56,10 +59,14 @@ import org.junit.runner.RunWith;
|
||||
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.S_V2)
|
||||
public class EthernetServiceImplTest {
|
||||
private static final String TEST_IFACE = "test123";
|
||||
private static final NetworkCapabilities DEFAULT_CAPS = new NetworkCapabilities.Builder()
|
||||
.addTransportType(TRANSPORT_ETHERNET)
|
||||
.setNetworkSpecifier(new EthernetNetworkSpecifier(TEST_IFACE))
|
||||
.build();
|
||||
private static final EthernetNetworkUpdateRequest UPDATE_REQUEST =
|
||||
new EthernetNetworkUpdateRequest.Builder()
|
||||
.setIpConfiguration(new IpConfiguration())
|
||||
.setNetworkCapabilities(new NetworkCapabilities.Builder().build())
|
||||
.setNetworkCapabilities(DEFAULT_CAPS)
|
||||
.build();
|
||||
private static final EthernetNetworkUpdateRequest UPDATE_REQUEST_WITHOUT_CAPABILITIES =
|
||||
new EthernetNetworkUpdateRequest.Builder()
|
||||
@@ -67,7 +74,7 @@ public class EthernetServiceImplTest {
|
||||
.build();
|
||||
private static final EthernetNetworkUpdateRequest UPDATE_REQUEST_WITHOUT_IP_CONFIG =
|
||||
new EthernetNetworkUpdateRequest.Builder()
|
||||
.setNetworkCapabilities(new NetworkCapabilities.Builder().build())
|
||||
.setNetworkCapabilities(DEFAULT_CAPS)
|
||||
.build();
|
||||
private static final INetworkInterfaceOutcomeReceiver NULL_LISTENER = null;
|
||||
private EthernetServiceImpl mEthernetServiceImpl;
|
||||
@@ -160,6 +167,41 @@ public class EthernetServiceImplTest {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateConfigurationRejectsWithInvalidSpecifierType() {
|
||||
final StringNetworkSpecifier invalidSpecifierType = new StringNetworkSpecifier("123");
|
||||
final EthernetNetworkUpdateRequest request =
|
||||
new EthernetNetworkUpdateRequest.Builder()
|
||||
.setNetworkCapabilities(
|
||||
new NetworkCapabilities.Builder()
|
||||
.addTransportType(TRANSPORT_ETHERNET)
|
||||
.setNetworkSpecifier(invalidSpecifierType)
|
||||
.build()
|
||||
).build();
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
mEthernetServiceImpl.updateConfiguration(
|
||||
"" /* iface */, request, null /* listener */);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateConfigurationRejectsWithInvalidSpecifierName() {
|
||||
final String ifaceToUpdate = "eth0";
|
||||
final String ifaceOnSpecifier = "wlan0";
|
||||
EthernetNetworkUpdateRequest request =
|
||||
new EthernetNetworkUpdateRequest.Builder()
|
||||
.setNetworkCapabilities(
|
||||
new NetworkCapabilities.Builder()
|
||||
.addTransportType(TRANSPORT_ETHERNET)
|
||||
.setNetworkSpecifier(
|
||||
new EthernetNetworkSpecifier(ifaceOnSpecifier))
|
||||
.build()
|
||||
).build();
|
||||
assertThrows(IllegalArgumentException.class, () -> {
|
||||
mEthernetServiceImpl.updateConfiguration(ifaceToUpdate, request, null /* listener */);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateConfigurationWithCapabilitiesWithAutomotiveFeature() {
|
||||
toggleAutomotiveFeature(false);
|
||||
@@ -246,6 +288,24 @@ public class EthernetServiceImplTest {
|
||||
eq(UPDATE_REQUEST.getNetworkCapabilities()), eq(NULL_LISTENER));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateConfigurationAddsSpecifierWhenNotSet() {
|
||||
final NetworkCapabilities nc = new NetworkCapabilities.Builder()
|
||||
.addTransportType(TRANSPORT_ETHERNET).build();
|
||||
final EthernetNetworkUpdateRequest requestSansSpecifier =
|
||||
new EthernetNetworkUpdateRequest.Builder()
|
||||
.setNetworkCapabilities(nc)
|
||||
.build();
|
||||
final NetworkCapabilities ncWithSpecifier = new NetworkCapabilities(nc)
|
||||
.setNetworkSpecifier(new EthernetNetworkSpecifier(TEST_IFACE));
|
||||
|
||||
mEthernetServiceImpl.updateConfiguration(TEST_IFACE, requestSansSpecifier, NULL_LISTENER);
|
||||
verify(mEthernetTracker).updateConfiguration(
|
||||
eq(TEST_IFACE),
|
||||
isNull(),
|
||||
eq(ncWithSpecifier), eq(NULL_LISTENER));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEnableInterface() {
|
||||
mEthernetServiceImpl.enableInterface(TEST_IFACE, NULL_LISTENER);
|
||||
|
||||
Reference in New Issue
Block a user