Loading tests/integration/src/android/net/ip/IpClientIntegrationTest.kt +9 −10 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.net.ip import android.net.ipmemorystore.NetworkAttributes import android.util.ArrayMap import org.mockito.Mockito.any import org.mockito.ArgumentCaptor import org.mockito.Mockito.eq Loading @@ -28,22 +29,20 @@ import org.mockito.Mockito.verify * Tests for IpClient, run with signature permissions. */ class IpClientIntegrationTest : IpClientIntegrationTestCommon() { private val mEnabledFeatures = ArrayMap<String, Boolean>() override fun makeIIpClient(ifaceName: String, cb: IIpClientCallbacks): IIpClient { return mIpc.makeConnector() } override fun useNetworkStackSignature() = true override fun setDhcpFeatures( isDhcpLeaseCacheEnabled: Boolean, isRapidCommitEnabled: Boolean, isDhcpIpConflictDetectEnabled: Boolean, isIPv6OnlyPreferredEnabled: Boolean ) { mDependencies.setDhcpLeaseCacheEnabled(isDhcpLeaseCacheEnabled) mDependencies.setDhcpRapidCommitEnabled(isRapidCommitEnabled) mDependencies.setDhcpIpConflictDetectEnabled(isDhcpIpConflictDetectEnabled) mDependencies.setIPv6OnlyPreferredEnabled(isIPv6OnlyPreferredEnabled) override fun isFeatureEnabled(name: String, defaultEnabled: Boolean): Boolean { return mEnabledFeatures.get(name) ?: defaultEnabled } override fun setFeatureEnabled(name: String, enabled: Boolean) { mEnabledFeatures.put(name, enabled) } override fun getStoredNetworkAttributes(l2Key: String, timeout: Long): NetworkAttributes { Loading tests/integration/src/android/net/ip/IpClientIntegrationTestCommon.java +20 −36 Original line number Diff line number Diff line Loading @@ -343,32 +343,12 @@ public abstract class IpClientIntegrationTestCommon { }; protected class Dependencies extends IpClient.Dependencies { private boolean mIsDhcpLeaseCacheEnabled; private boolean mIsDhcpRapidCommitEnabled; private boolean mIsDhcpIpConflictDetectEnabled; // Can't use SparseIntArray, it doesn't have an easy way to know if a key is not present. private HashMap<String, Integer> mIntConfigProperties = new HashMap<>(); private DhcpClient mDhcpClient; private boolean mIsHostnameConfigurationEnabled; private String mHostname; private boolean mIsInterfaceRecovered; private boolean mIsIPv6OnlyPreferredEnabled; public void setDhcpLeaseCacheEnabled(final boolean enable) { mIsDhcpLeaseCacheEnabled = enable; } public void setDhcpRapidCommitEnabled(final boolean enable) { mIsDhcpRapidCommitEnabled = enable; } public void setDhcpIpConflictDetectEnabled(final boolean enable) { mIsDhcpIpConflictDetectEnabled = enable; } public void setIPv6OnlyPreferredEnabled(final boolean enable) { mIsIPv6OnlyPreferredEnabled = enable; } public void setHostnameConfiguration(final boolean enable, final String hostname) { mIsHostnameConfigurationEnabled = enable; Loading Loading @@ -410,6 +390,11 @@ public abstract class IpClientIntegrationTestCommon { return mDhcpClient; } public boolean isFeatureEnabled(final Context context, final String name, final boolean defaultEnabled) { return IpClientIntegrationTestCommon.this.isFeatureEnabled(name, defaultEnabled); } @Override public DhcpClient.Dependencies getDhcpClientDependencies( NetworkStackIpMemoryStore ipMemoryStore, IpProvisioningMetrics metrics) { Loading @@ -417,19 +402,7 @@ public abstract class IpClientIntegrationTestCommon { @Override public boolean isFeatureEnabled(final Context context, final String name, final boolean defaultEnabled) { switch (name) { case NetworkStackUtils.DHCP_RAPID_COMMIT_VERSION: return mIsDhcpRapidCommitEnabled; case NetworkStackUtils.DHCP_INIT_REBOOT_VERSION: return mIsDhcpLeaseCacheEnabled; case NetworkStackUtils.DHCP_IP_CONFLICT_DETECT_VERSION: return mIsDhcpIpConflictDetectEnabled; case NetworkStackUtils.DHCP_IPV6_ONLY_PREFERRED_VERSION: return mIsIPv6OnlyPreferredEnabled; default: fail("Invalid experiment flag: " + name); return false; } return Dependencies.this.isFeatureEnabled(context, name, defaultEnabled); } @Override Loading Loading @@ -473,9 +446,9 @@ public abstract class IpClientIntegrationTestCommon { protected abstract IIpClient makeIIpClient( @NonNull String ifaceName, @NonNull IIpClientCallbacks cb); protected abstract void setDhcpFeatures(boolean isDhcpLeaseCacheEnabled, boolean isRapidCommitEnabled, boolean isDhcpIpConflictDetectEnabled, boolean isIPv6OnlyPreferredEnabled); protected abstract void setFeatureEnabled(String name, boolean enabled); protected abstract boolean isFeatureEnabled(String name, boolean defaultEnabled); protected abstract boolean useNetworkStackSignature(); Loading @@ -490,6 +463,17 @@ public abstract class IpClientIntegrationTestCommon { && (mIsSignatureRequiredTest || !TestNetworkStackServiceClient.isSupported()); } protected void setDhcpFeatures(final boolean isDhcpLeaseCacheEnabled, final boolean isRapidCommitEnabled, final boolean isDhcpIpConflictDetectEnabled, final boolean isIPv6OnlyPreferredEnabled) { setFeatureEnabled(NetworkStackUtils.DHCP_INIT_REBOOT_VERSION, isDhcpLeaseCacheEnabled); setFeatureEnabled(NetworkStackUtils.DHCP_RAPID_COMMIT_VERSION, isRapidCommitEnabled); setFeatureEnabled(NetworkStackUtils.DHCP_IP_CONFLICT_DETECT_VERSION, isDhcpIpConflictDetectEnabled); setFeatureEnabled(NetworkStackUtils.DHCP_IPV6_ONLY_PREFERRED_VERSION, isIPv6OnlyPreferredEnabled); } @Before public void setUp() throws Exception { final Method testMethod = IpClientIntegrationTestCommon.class.getMethod( Loading tests/integration/src/android/net/ip/IpClientRootTest.kt +20 −24 Original line number Diff line number Diff line Loading @@ -26,12 +26,12 @@ import android.net.ipmemorystore.OnNetworkAttributesRetrievedListener import android.net.ipmemorystore.NetworkAttributes import android.net.ipmemorystore.Status import android.net.networkstack.TestNetworkStackServiceClient import android.net.util.NetworkStackUtils import android.os.Process import android.provider.DeviceConfig import android.util.ArrayMap import android.util.Log import androidx.test.platform.app.InstrumentationRegistry import com.android.net.module.util.DeviceConfigUtils import java.lang.System.currentTimeMillis import java.util.concurrent.CompletableFuture import java.util.concurrent.CountDownLatch Loading Loading @@ -194,26 +194,9 @@ class IpClientRootTest : IpClientIntegrationTestCommon() { return ipClientCaptor.value } override fun setDhcpFeatures( isDhcpLeaseCacheEnabled: Boolean, isRapidCommitEnabled: Boolean, isDhcpIpConflictDetectEnabled: Boolean, isIPv6OnlyPreferredEnabled: Boolean ) { override fun setFeatureEnabled(feature: String, enabled: Boolean) { automation.adoptShellPermissionIdentity(READ_DEVICE_CONFIG, WRITE_DEVICE_CONFIG) try { setFeatureEnabled(NetworkStackUtils.DHCP_INIT_REBOOT_VERSION, isDhcpLeaseCacheEnabled) setFeatureEnabled(NetworkStackUtils.DHCP_RAPID_COMMIT_VERSION, isRapidCommitEnabled) setFeatureEnabled(NetworkStackUtils.DHCP_IP_CONFLICT_DETECT_VERSION, isDhcpIpConflictDetectEnabled) setFeatureEnabled(NetworkStackUtils.DHCP_IPV6_ONLY_PREFERRED_VERSION, isIPv6OnlyPreferredEnabled) } finally { automation.dropShellPermissionIdentity() } } private fun setFeatureEnabled(feature: String, enabled: Boolean) { // Do not use computeIfAbsent as it would overwrite null values (flag originally unset) if (!originalFlagValues.containsKey(feature)) { originalFlagValues[feature] = Loading @@ -225,6 +208,19 @@ class IpClientRootTest : IpClientIntegrationTestCommon() { // "999999999" DeviceConfig.setProperty(DeviceConfig.NAMESPACE_CONNECTIVITY, feature, if (enabled) "1" else "999999999", false) } finally { automation.dropShellPermissionIdentity() } } override fun isFeatureEnabled(name: String, defaultEnabled: Boolean): Boolean { automation.adoptShellPermissionIdentity(READ_DEVICE_CONFIG, WRITE_DEVICE_CONFIG) try { return DeviceConfigUtils.isFeatureEnabled(mContext, DeviceConfig.NAMESPACE_CONNECTIVITY, name, defaultEnabled) } finally { automation.dropShellPermissionIdentity() } } private class TestAttributesRetrievedListener : OnNetworkAttributesRetrievedListener { Loading Loading
tests/integration/src/android/net/ip/IpClientIntegrationTest.kt +9 −10 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.net.ip import android.net.ipmemorystore.NetworkAttributes import android.util.ArrayMap import org.mockito.Mockito.any import org.mockito.ArgumentCaptor import org.mockito.Mockito.eq Loading @@ -28,22 +29,20 @@ import org.mockito.Mockito.verify * Tests for IpClient, run with signature permissions. */ class IpClientIntegrationTest : IpClientIntegrationTestCommon() { private val mEnabledFeatures = ArrayMap<String, Boolean>() override fun makeIIpClient(ifaceName: String, cb: IIpClientCallbacks): IIpClient { return mIpc.makeConnector() } override fun useNetworkStackSignature() = true override fun setDhcpFeatures( isDhcpLeaseCacheEnabled: Boolean, isRapidCommitEnabled: Boolean, isDhcpIpConflictDetectEnabled: Boolean, isIPv6OnlyPreferredEnabled: Boolean ) { mDependencies.setDhcpLeaseCacheEnabled(isDhcpLeaseCacheEnabled) mDependencies.setDhcpRapidCommitEnabled(isRapidCommitEnabled) mDependencies.setDhcpIpConflictDetectEnabled(isDhcpIpConflictDetectEnabled) mDependencies.setIPv6OnlyPreferredEnabled(isIPv6OnlyPreferredEnabled) override fun isFeatureEnabled(name: String, defaultEnabled: Boolean): Boolean { return mEnabledFeatures.get(name) ?: defaultEnabled } override fun setFeatureEnabled(name: String, enabled: Boolean) { mEnabledFeatures.put(name, enabled) } override fun getStoredNetworkAttributes(l2Key: String, timeout: Long): NetworkAttributes { Loading
tests/integration/src/android/net/ip/IpClientIntegrationTestCommon.java +20 −36 Original line number Diff line number Diff line Loading @@ -343,32 +343,12 @@ public abstract class IpClientIntegrationTestCommon { }; protected class Dependencies extends IpClient.Dependencies { private boolean mIsDhcpLeaseCacheEnabled; private boolean mIsDhcpRapidCommitEnabled; private boolean mIsDhcpIpConflictDetectEnabled; // Can't use SparseIntArray, it doesn't have an easy way to know if a key is not present. private HashMap<String, Integer> mIntConfigProperties = new HashMap<>(); private DhcpClient mDhcpClient; private boolean mIsHostnameConfigurationEnabled; private String mHostname; private boolean mIsInterfaceRecovered; private boolean mIsIPv6OnlyPreferredEnabled; public void setDhcpLeaseCacheEnabled(final boolean enable) { mIsDhcpLeaseCacheEnabled = enable; } public void setDhcpRapidCommitEnabled(final boolean enable) { mIsDhcpRapidCommitEnabled = enable; } public void setDhcpIpConflictDetectEnabled(final boolean enable) { mIsDhcpIpConflictDetectEnabled = enable; } public void setIPv6OnlyPreferredEnabled(final boolean enable) { mIsIPv6OnlyPreferredEnabled = enable; } public void setHostnameConfiguration(final boolean enable, final String hostname) { mIsHostnameConfigurationEnabled = enable; Loading Loading @@ -410,6 +390,11 @@ public abstract class IpClientIntegrationTestCommon { return mDhcpClient; } public boolean isFeatureEnabled(final Context context, final String name, final boolean defaultEnabled) { return IpClientIntegrationTestCommon.this.isFeatureEnabled(name, defaultEnabled); } @Override public DhcpClient.Dependencies getDhcpClientDependencies( NetworkStackIpMemoryStore ipMemoryStore, IpProvisioningMetrics metrics) { Loading @@ -417,19 +402,7 @@ public abstract class IpClientIntegrationTestCommon { @Override public boolean isFeatureEnabled(final Context context, final String name, final boolean defaultEnabled) { switch (name) { case NetworkStackUtils.DHCP_RAPID_COMMIT_VERSION: return mIsDhcpRapidCommitEnabled; case NetworkStackUtils.DHCP_INIT_REBOOT_VERSION: return mIsDhcpLeaseCacheEnabled; case NetworkStackUtils.DHCP_IP_CONFLICT_DETECT_VERSION: return mIsDhcpIpConflictDetectEnabled; case NetworkStackUtils.DHCP_IPV6_ONLY_PREFERRED_VERSION: return mIsIPv6OnlyPreferredEnabled; default: fail("Invalid experiment flag: " + name); return false; } return Dependencies.this.isFeatureEnabled(context, name, defaultEnabled); } @Override Loading Loading @@ -473,9 +446,9 @@ public abstract class IpClientIntegrationTestCommon { protected abstract IIpClient makeIIpClient( @NonNull String ifaceName, @NonNull IIpClientCallbacks cb); protected abstract void setDhcpFeatures(boolean isDhcpLeaseCacheEnabled, boolean isRapidCommitEnabled, boolean isDhcpIpConflictDetectEnabled, boolean isIPv6OnlyPreferredEnabled); protected abstract void setFeatureEnabled(String name, boolean enabled); protected abstract boolean isFeatureEnabled(String name, boolean defaultEnabled); protected abstract boolean useNetworkStackSignature(); Loading @@ -490,6 +463,17 @@ public abstract class IpClientIntegrationTestCommon { && (mIsSignatureRequiredTest || !TestNetworkStackServiceClient.isSupported()); } protected void setDhcpFeatures(final boolean isDhcpLeaseCacheEnabled, final boolean isRapidCommitEnabled, final boolean isDhcpIpConflictDetectEnabled, final boolean isIPv6OnlyPreferredEnabled) { setFeatureEnabled(NetworkStackUtils.DHCP_INIT_REBOOT_VERSION, isDhcpLeaseCacheEnabled); setFeatureEnabled(NetworkStackUtils.DHCP_RAPID_COMMIT_VERSION, isRapidCommitEnabled); setFeatureEnabled(NetworkStackUtils.DHCP_IP_CONFLICT_DETECT_VERSION, isDhcpIpConflictDetectEnabled); setFeatureEnabled(NetworkStackUtils.DHCP_IPV6_ONLY_PREFERRED_VERSION, isIPv6OnlyPreferredEnabled); } @Before public void setUp() throws Exception { final Method testMethod = IpClientIntegrationTestCommon.class.getMethod( Loading
tests/integration/src/android/net/ip/IpClientRootTest.kt +20 −24 Original line number Diff line number Diff line Loading @@ -26,12 +26,12 @@ import android.net.ipmemorystore.OnNetworkAttributesRetrievedListener import android.net.ipmemorystore.NetworkAttributes import android.net.ipmemorystore.Status import android.net.networkstack.TestNetworkStackServiceClient import android.net.util.NetworkStackUtils import android.os.Process import android.provider.DeviceConfig import android.util.ArrayMap import android.util.Log import androidx.test.platform.app.InstrumentationRegistry import com.android.net.module.util.DeviceConfigUtils import java.lang.System.currentTimeMillis import java.util.concurrent.CompletableFuture import java.util.concurrent.CountDownLatch Loading Loading @@ -194,26 +194,9 @@ class IpClientRootTest : IpClientIntegrationTestCommon() { return ipClientCaptor.value } override fun setDhcpFeatures( isDhcpLeaseCacheEnabled: Boolean, isRapidCommitEnabled: Boolean, isDhcpIpConflictDetectEnabled: Boolean, isIPv6OnlyPreferredEnabled: Boolean ) { override fun setFeatureEnabled(feature: String, enabled: Boolean) { automation.adoptShellPermissionIdentity(READ_DEVICE_CONFIG, WRITE_DEVICE_CONFIG) try { setFeatureEnabled(NetworkStackUtils.DHCP_INIT_REBOOT_VERSION, isDhcpLeaseCacheEnabled) setFeatureEnabled(NetworkStackUtils.DHCP_RAPID_COMMIT_VERSION, isRapidCommitEnabled) setFeatureEnabled(NetworkStackUtils.DHCP_IP_CONFLICT_DETECT_VERSION, isDhcpIpConflictDetectEnabled) setFeatureEnabled(NetworkStackUtils.DHCP_IPV6_ONLY_PREFERRED_VERSION, isIPv6OnlyPreferredEnabled) } finally { automation.dropShellPermissionIdentity() } } private fun setFeatureEnabled(feature: String, enabled: Boolean) { // Do not use computeIfAbsent as it would overwrite null values (flag originally unset) if (!originalFlagValues.containsKey(feature)) { originalFlagValues[feature] = Loading @@ -225,6 +208,19 @@ class IpClientRootTest : IpClientIntegrationTestCommon() { // "999999999" DeviceConfig.setProperty(DeviceConfig.NAMESPACE_CONNECTIVITY, feature, if (enabled) "1" else "999999999", false) } finally { automation.dropShellPermissionIdentity() } } override fun isFeatureEnabled(name: String, defaultEnabled: Boolean): Boolean { automation.adoptShellPermissionIdentity(READ_DEVICE_CONFIG, WRITE_DEVICE_CONFIG) try { return DeviceConfigUtils.isFeatureEnabled(mContext, DeviceConfig.NAMESPACE_CONNECTIVITY, name, defaultEnabled) } finally { automation.dropShellPermissionIdentity() } } private class TestAttributesRetrievedListener : OnNetworkAttributesRetrievedListener { Loading