Add util method to convert StaticIpConfiguration to proto
This patch adds util methods to convert StaticIpConfiguration to its proto equivalent, and also adds unit tests to test the conversion. Test: atest ConnectivityCoverageTests Bug: 397536853 Flag: EXEMPT mainline Change-Id: I1bd5683202bc0e144e195b4915721e7f414c95cf
This commit is contained in:
parent
c0293a238b
commit
014ae496d1
2 changed files with 85 additions and 0 deletions
|
|
@ -23,15 +23,20 @@ import android.net.EthernetPortSelector;
|
|||
import android.net.InetAddresses;
|
||||
import android.net.LinkAddress;
|
||||
import android.net.MacAddress;
|
||||
import android.net.StaticIpConfiguration;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.EthernetPortSelectorProto;
|
||||
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.LinkAddressProto;
|
||||
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.MeteredOverrideProto;
|
||||
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.StaticIpv4ConfigurationProto;
|
||||
|
||||
import java.net.InetAddress;
|
||||
|
||||
/**
|
||||
* Static util methods for {@link ProtoConfig}.
|
||||
* Note that conversion methods are responsible of doing null check on arguments.
|
||||
*/
|
||||
public class ProtoConfigUtils {
|
||||
private static final String TAG = "ProtoConfigUtils";
|
||||
|
|
@ -143,4 +148,29 @@ public class ProtoConfigUtils {
|
|||
throw new IllegalArgumentException("No MAC address or interface is found.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an {@link StaticIpConfiguration} object to a corresponding.
|
||||
* {@link StaticIpv4ConfigurationProto} object.
|
||||
*/
|
||||
public static StaticIpv4ConfigurationProto convertStaticIpConfigurationToProto(
|
||||
StaticIpConfiguration config) {
|
||||
requireNonNull(config, "Static IP configuration cannot be null.");
|
||||
final StaticIpv4ConfigurationProto.Builder builder =
|
||||
StaticIpv4ConfigurationProto.newBuilder();
|
||||
builder.setAddress(convertLinkAddressToProto(config.getIpAddress()));
|
||||
if (config.getGateway() != null) {
|
||||
builder.setGateway(config.getGateway().getHostAddress());
|
||||
}
|
||||
for (InetAddress inetAddr : config.getDnsServers()) {
|
||||
builder.addDnsServers(inetAddr.getHostAddress());
|
||||
}
|
||||
if (config.getDomains() != null) {
|
||||
for (String domain : config.getDomains().split(",")) {
|
||||
if (domain.isEmpty()) continue;
|
||||
builder.addSearchDomains(domain);
|
||||
}
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,19 +24,28 @@ import static org.junit.Assert.assertTrue;
|
|||
|
||||
import android.net.EthernetConfiguration;
|
||||
import android.net.EthernetPortSelector;
|
||||
import android.net.InetAddresses;
|
||||
import android.net.LinkAddress;
|
||||
import android.net.MacAddress;
|
||||
import android.net.StaticIpConfiguration;
|
||||
import android.os.Build;
|
||||
|
||||
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.EthernetPortSelectorProto;
|
||||
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.LinkAddressProto;
|
||||
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.MeteredOverrideProto;
|
||||
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.StaticIpv4ConfigurationProto;
|
||||
import com.android.testutils.DevSdkIgnoreRule;
|
||||
import com.android.testutils.DevSdkIgnoreRunner;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link ProtoConfigUtils}
|
||||
*/
|
||||
|
|
@ -48,6 +57,15 @@ public class ProtoConfigUtilsTest {
|
|||
private static final int PREFIX_LENGTH = 24;
|
||||
private static final String IFACE_NAME = "eth0";
|
||||
private static final MacAddress MAC_ADDR = MacAddress.fromString("aa:bb:cc:dd:ee:11");
|
||||
private static final String GATEWAY_ADDRESS = "192.168.1.1";
|
||||
private static final String DOMAIN1 = "aexample.com";
|
||||
private static final String DOMAIN2 = "test.net";
|
||||
private static final String DNS_IP_ADDR_1 = "1.2.3.4";
|
||||
private static final String DNS_IP_ADDR_2 = "5.6.7.8";
|
||||
|
||||
private static final ArrayList<InetAddress> DNS_SERVERS = new ArrayList<>(List.of(
|
||||
InetAddresses.parseNumericAddress(DNS_IP_ADDR_1),
|
||||
InetAddresses.parseNumericAddress(DNS_IP_ADDR_2)));
|
||||
|
||||
@Test
|
||||
public void testconvertMeteredOverrideToProto() {
|
||||
|
|
@ -150,4 +168,41 @@ public class ProtoConfigUtilsTest {
|
|||
assertThrows(IllegalArgumentException.class, () ->
|
||||
ProtoConfigUtils.convertPortSelectorFromProto(emptyProto));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConvertStaticIpConfigurationToProto() {
|
||||
final StaticIpConfiguration staticIpConfig = new StaticIpConfiguration.Builder()
|
||||
.setIpAddress(new LinkAddress(LINK_ADDRESS_STRING))
|
||||
.setGateway(InetAddresses.parseNumericAddress(GATEWAY_ADDRESS))
|
||||
.setDnsServers(DNS_SERVERS)
|
||||
.setDomains(DOMAIN1 + "," + DOMAIN2)
|
||||
.build();
|
||||
|
||||
final StaticIpv4ConfigurationProto proto =
|
||||
ProtoConfigUtils.convertStaticIpConfigurationToProto(staticIpConfig);
|
||||
|
||||
assertNotNull(proto);
|
||||
assertTrue(proto.hasAddress());
|
||||
Assert.assertEquals(IP_ADDRESS_STRING, proto.getAddress().getAddress());
|
||||
Assert.assertEquals(PREFIX_LENGTH, proto.getAddress().getPrefixLength());
|
||||
|
||||
assertTrue(proto.hasGateway());
|
||||
Assert.assertEquals(GATEWAY_ADDRESS, proto.getGateway());
|
||||
|
||||
Assert.assertEquals(2, proto.getDnsServersCount());
|
||||
Assert.assertEquals(Arrays.asList(DNS_IP_ADDR_1, DNS_IP_ADDR_2),
|
||||
proto.getDnsServersList());
|
||||
|
||||
Assert.assertEquals(2, proto.getSearchDomainsCount());
|
||||
Assert.assertEquals(Arrays.asList(DOMAIN1, DOMAIN2),
|
||||
proto.getSearchDomainsList());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConvertStaticIpConfigurationToProto_nullInput() {
|
||||
assertThrows("Static IP configuration cannot be null.",
|
||||
NullPointerException.class, () -> {
|
||||
ProtoConfigUtils.convertStaticIpConfigurationToProto(null);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue