Merge "Add conversion util methods for LinkAddress" into main

This commit is contained in:
Chuwei He 2025-09-07 18:36:37 -07:00 • committed by Android (Google) Code Review
commit 41f97eedb2
2 changed files with 54 additions and 0 deletions

View file

@ -19,8 +19,11 @@ import static java.util.Objects.requireNonNull;
import android.net.EthernetConfiguration;
import android.net.EthernetConfiguration.MeteredOverride;
import android.net.InetAddresses;
import android.net.LinkAddress;
import android.util.Log;
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.LinkAddressProto;
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.MeteredOverrideProto;
/**
@ -69,4 +72,28 @@ public class ProtoConfigUtils {
}
};
}
/**
* Converts an {@link LinkAddress} object to a corresponding {@link LinkAddressProto} object.
*/
public static LinkAddressProto convertLinkAddressToProto(LinkAddress linkAddress) {
requireNonNull(linkAddress, "LinkAddress must not be null");
return LinkAddressProto.newBuilder()
.setAddress(linkAddress.getAddress().getHostAddress())
.setPrefixLength(linkAddress.getPrefixLength())
.build();
}
/**
* Converts an {@link LinkAddressProto} object to a corresponding value of {@link LinkAddress}
* type.
*
* @throws IllegalArgumentException if the address string in the proto is not a valid IP
* address.
*/
public static LinkAddress convertLinkAddressFromProto(LinkAddressProto linkAddress) {
requireNonNull(linkAddress, "LinkAddressProto must not be null");
return new LinkAddress(InetAddresses.parseNumericAddress(linkAddress.getAddress()),
linkAddress.getPrefixLength());
}
}

View file

@ -19,8 +19,10 @@ package com.android.server.net;
import static org.junit.Assert.assertEquals;
import android.net.EthernetConfiguration;
import android.net.LinkAddress;
import android.os.Build;
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.LinkAddressProto;
import com.android.server.network.configstore.proto.NetworkConfigStoreProto.MeteredOverrideProto;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRunner;
@ -34,6 +36,10 @@ import org.junit.runner.RunWith;
@RunWith(DevSdkIgnoreRunner.class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.S_V2)
public class ProtoConfigUtilsTest {
private static final String LINK_ADDRESS_STRING = "192.168.1.10/24";
private static final String IP_ADDRESS_STRING = "192.168.1.10";
private static final int PREFIX_LENGTH = 24;
@Test
public void testconvertMeteredOverrideToProto() {
assertEquals(MeteredOverrideProto.METERED_OVERRIDE_FORCE_METERED,
@ -59,4 +65,25 @@ public class ProtoConfigUtilsTest {
ProtoConfigUtils.convertMeteredOverrideFromProto(
MeteredOverrideProto.METERED_OVERRIDE_NONE));
}
@Test
public void testConvertLinkAddressToProto() {
LinkAddress linkAddr = new LinkAddress(LINK_ADDRESS_STRING);
LinkAddressProto proto = ProtoConfigUtils.convertLinkAddressToProto(linkAddr);
assertEquals(IP_ADDRESS_STRING, proto.getAddress());
assertEquals(PREFIX_LENGTH, proto.getPrefixLength());
}
@Test
public void testConvertLinkAddressFromProto() {
LinkAddressProto proto = LinkAddressProto.newBuilder()
.setAddress(IP_ADDRESS_STRING)
.setPrefixLength(PREFIX_LENGTH)
.build();
LinkAddress actual = ProtoConfigUtils.convertLinkAddressFromProto(proto);
LinkAddress target = new LinkAddress(LINK_ADDRESS_STRING);
assertEquals(actual, target);
}
}