Loading src/android/net/ip/IpReachabilityMonitor.java +4 −3 Original line number Original line Diff line number Diff line Loading @@ -187,7 +187,7 @@ public class IpReachabilityMonitor { private final Dependencies mDependencies; private final Dependencies mDependencies; private final boolean mUsingMultinetworkPolicyTracker; private final boolean mUsingMultinetworkPolicyTracker; private final ConnectivityManager mCm; private final ConnectivityManager mCm; private final IpConnectivityLog mMetricsLog = new IpConnectivityLog(); private final IpConnectivityLog mMetricsLog; private final Context mContext; private final Context mContext; private final INetd mNetd; private final INetd mNetd; private LinkProperties mLinkProperties = new LinkProperties(); private LinkProperties mLinkProperties = new LinkProperties(); Loading @@ -201,13 +201,13 @@ public class IpReachabilityMonitor { Context context, InterfaceParams ifParams, Handler h, SharedLog log, Callback callback, Context context, InterfaceParams ifParams, Handler h, SharedLog log, Callback callback, boolean usingMultinetworkPolicyTracker, final INetd netd) { boolean usingMultinetworkPolicyTracker, final INetd netd) { this(context, ifParams, h, log, callback, usingMultinetworkPolicyTracker, this(context, ifParams, h, log, callback, usingMultinetworkPolicyTracker, Dependencies.makeDefault(context, ifParams.name), netd); Dependencies.makeDefault(context, ifParams.name), new IpConnectivityLog(), netd); } } @VisibleForTesting @VisibleForTesting IpReachabilityMonitor(Context context, InterfaceParams ifParams, Handler h, SharedLog log, IpReachabilityMonitor(Context context, InterfaceParams ifParams, Handler h, SharedLog log, Callback callback, boolean usingMultinetworkPolicyTracker, Dependencies dependencies, Callback callback, boolean usingMultinetworkPolicyTracker, Dependencies dependencies, final INetd netd) { final IpConnectivityLog metricsLog, final INetd netd) { if (ifParams == null) throw new IllegalArgumentException("null InterfaceParams"); if (ifParams == null) throw new IllegalArgumentException("null InterfaceParams"); mContext = context; mContext = context; Loading @@ -217,6 +217,7 @@ public class IpReachabilityMonitor { mUsingMultinetworkPolicyTracker = usingMultinetworkPolicyTracker; mUsingMultinetworkPolicyTracker = usingMultinetworkPolicyTracker; mCm = context.getSystemService(ConnectivityManager.class); mCm = context.getSystemService(ConnectivityManager.class); mDependencies = dependencies; mDependencies = dependencies; mMetricsLog = metricsLog; mNetd = netd; mNetd = netd; Preconditions.checkNotNull(mNetd); Preconditions.checkNotNull(mNetd); Preconditions.checkArgument(!TextUtils.isEmpty(mInterfaceParams.name)); Preconditions.checkArgument(!TextUtils.isEmpty(mInterfaceParams.name)); Loading tests/unit/src/android/net/ip/IpReachabilityMonitorTest.kt +6 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.net.IpPrefix import android.net.LinkAddress import android.net.LinkAddress import android.net.LinkProperties import android.net.LinkProperties import android.net.RouteInfo import android.net.RouteInfo import android.net.metrics.IpConnectivityLog import android.net.netlink.StructNdMsg.NUD_FAILED import android.net.netlink.StructNdMsg.NUD_FAILED import android.net.netlink.StructNdMsg.NUD_STALE import android.net.netlink.StructNdMsg.NUD_STALE import android.net.netlink.makeNewNeighMessage import android.net.netlink.makeNewNeighMessage Loading @@ -35,6 +36,7 @@ import android.system.ErrnoException import android.system.OsConstants.EAGAIN import android.system.OsConstants.EAGAIN import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import androidx.test.runner.AndroidJUnit4 import androidx.test.runner.AndroidJUnit4 import com.android.testutils.waitForIdle import org.junit.After import org.junit.After import org.junit.Before import org.junit.Before import org.junit.Test import org.junit.Test Loading Loading @@ -101,6 +103,7 @@ class IpReachabilityMonitorTest { private val context = mock(Context::class.java) private val context = mock(Context::class.java) private val netd = mock(INetd::class.java) private val netd = mock(INetd::class.java) private val fd = mock(FileDescriptor::class.java) private val fd = mock(FileDescriptor::class.java) private val metricsLog = mock(IpConnectivityLog::class.java) private val handlerThread = HandlerThread(IpReachabilityMonitorTest::class.simpleName) private val handlerThread = HandlerThread(IpReachabilityMonitorTest::class.simpleName) private val handler by lazy { Handler(handlerThread.looper) } private val handler by lazy { Handler(handlerThread.looper) } Loading Loading @@ -180,6 +183,7 @@ class IpReachabilityMonitorTest { callback, callback, false /* useMultinetworkPolicyTracker */, false /* useMultinetworkPolicyTracker */, dependencies, dependencies, metricsLog, netd)) netd)) } } reachabilityMonitor = monitorFuture.get(TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS) reachabilityMonitor = monitorFuture.get(TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS) Loading @@ -189,6 +193,8 @@ class IpReachabilityMonitorTest { @After @After fun tearDown() { fun tearDown() { // Ensure the handler thread is not accessing the fd while changing its mock handlerThread.waitForIdle(TEST_TIMEOUT_MS) doReturn(false).`when`(fd).valid() doReturn(false).`when`(fd).valid() handlerThread.quitSafely() handlerThread.quitSafely() } } Loading tests/unit/src/android/net/netlink/NetlinkTestUtils.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -74,7 +74,7 @@ private fun makeNeighborMessage( (if (neighAddr is Inet6Address) "1400" else "0800") + (if (neighAddr is Inet6Address) "1400" else "0800") + "0100" + // type (1 == NDA_DST, for neighbor messages) "0100" + // type (1 == NDA_DST, for neighbor messages) // IP address: // IP address: encodeToString(neighAddr.address, false /* upperCase */) + encodeToString(neighAddr.address) + // -- struct nlattr: NDA_LLADDR -- // -- struct nlattr: NDA_LLADDR -- "0a00" + // length = 10 "0a00" + // length = 10 "0200" + // type (2 == NDA_LLADDR, for neighbor messages) "0200" + // type (2 == NDA_LLADDR, for neighbor messages) Loading Loading
src/android/net/ip/IpReachabilityMonitor.java +4 −3 Original line number Original line Diff line number Diff line Loading @@ -187,7 +187,7 @@ public class IpReachabilityMonitor { private final Dependencies mDependencies; private final Dependencies mDependencies; private final boolean mUsingMultinetworkPolicyTracker; private final boolean mUsingMultinetworkPolicyTracker; private final ConnectivityManager mCm; private final ConnectivityManager mCm; private final IpConnectivityLog mMetricsLog = new IpConnectivityLog(); private final IpConnectivityLog mMetricsLog; private final Context mContext; private final Context mContext; private final INetd mNetd; private final INetd mNetd; private LinkProperties mLinkProperties = new LinkProperties(); private LinkProperties mLinkProperties = new LinkProperties(); Loading @@ -201,13 +201,13 @@ public class IpReachabilityMonitor { Context context, InterfaceParams ifParams, Handler h, SharedLog log, Callback callback, Context context, InterfaceParams ifParams, Handler h, SharedLog log, Callback callback, boolean usingMultinetworkPolicyTracker, final INetd netd) { boolean usingMultinetworkPolicyTracker, final INetd netd) { this(context, ifParams, h, log, callback, usingMultinetworkPolicyTracker, this(context, ifParams, h, log, callback, usingMultinetworkPolicyTracker, Dependencies.makeDefault(context, ifParams.name), netd); Dependencies.makeDefault(context, ifParams.name), new IpConnectivityLog(), netd); } } @VisibleForTesting @VisibleForTesting IpReachabilityMonitor(Context context, InterfaceParams ifParams, Handler h, SharedLog log, IpReachabilityMonitor(Context context, InterfaceParams ifParams, Handler h, SharedLog log, Callback callback, boolean usingMultinetworkPolicyTracker, Dependencies dependencies, Callback callback, boolean usingMultinetworkPolicyTracker, Dependencies dependencies, final INetd netd) { final IpConnectivityLog metricsLog, final INetd netd) { if (ifParams == null) throw new IllegalArgumentException("null InterfaceParams"); if (ifParams == null) throw new IllegalArgumentException("null InterfaceParams"); mContext = context; mContext = context; Loading @@ -217,6 +217,7 @@ public class IpReachabilityMonitor { mUsingMultinetworkPolicyTracker = usingMultinetworkPolicyTracker; mUsingMultinetworkPolicyTracker = usingMultinetworkPolicyTracker; mCm = context.getSystemService(ConnectivityManager.class); mCm = context.getSystemService(ConnectivityManager.class); mDependencies = dependencies; mDependencies = dependencies; mMetricsLog = metricsLog; mNetd = netd; mNetd = netd; Preconditions.checkNotNull(mNetd); Preconditions.checkNotNull(mNetd); Preconditions.checkArgument(!TextUtils.isEmpty(mInterfaceParams.name)); Preconditions.checkArgument(!TextUtils.isEmpty(mInterfaceParams.name)); Loading
tests/unit/src/android/net/ip/IpReachabilityMonitorTest.kt +6 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.net.IpPrefix import android.net.LinkAddress import android.net.LinkAddress import android.net.LinkProperties import android.net.LinkProperties import android.net.RouteInfo import android.net.RouteInfo import android.net.metrics.IpConnectivityLog import android.net.netlink.StructNdMsg.NUD_FAILED import android.net.netlink.StructNdMsg.NUD_FAILED import android.net.netlink.StructNdMsg.NUD_STALE import android.net.netlink.StructNdMsg.NUD_STALE import android.net.netlink.makeNewNeighMessage import android.net.netlink.makeNewNeighMessage Loading @@ -35,6 +36,7 @@ import android.system.ErrnoException import android.system.OsConstants.EAGAIN import android.system.OsConstants.EAGAIN import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import androidx.test.runner.AndroidJUnit4 import androidx.test.runner.AndroidJUnit4 import com.android.testutils.waitForIdle import org.junit.After import org.junit.After import org.junit.Before import org.junit.Before import org.junit.Test import org.junit.Test Loading Loading @@ -101,6 +103,7 @@ class IpReachabilityMonitorTest { private val context = mock(Context::class.java) private val context = mock(Context::class.java) private val netd = mock(INetd::class.java) private val netd = mock(INetd::class.java) private val fd = mock(FileDescriptor::class.java) private val fd = mock(FileDescriptor::class.java) private val metricsLog = mock(IpConnectivityLog::class.java) private val handlerThread = HandlerThread(IpReachabilityMonitorTest::class.simpleName) private val handlerThread = HandlerThread(IpReachabilityMonitorTest::class.simpleName) private val handler by lazy { Handler(handlerThread.looper) } private val handler by lazy { Handler(handlerThread.looper) } Loading Loading @@ -180,6 +183,7 @@ class IpReachabilityMonitorTest { callback, callback, false /* useMultinetworkPolicyTracker */, false /* useMultinetworkPolicyTracker */, dependencies, dependencies, metricsLog, netd)) netd)) } } reachabilityMonitor = monitorFuture.get(TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS) reachabilityMonitor = monitorFuture.get(TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS) Loading @@ -189,6 +193,8 @@ class IpReachabilityMonitorTest { @After @After fun tearDown() { fun tearDown() { // Ensure the handler thread is not accessing the fd while changing its mock handlerThread.waitForIdle(TEST_TIMEOUT_MS) doReturn(false).`when`(fd).valid() doReturn(false).`when`(fd).valid() handlerThread.quitSafely() handlerThread.quitSafely() } } Loading
tests/unit/src/android/net/netlink/NetlinkTestUtils.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -74,7 +74,7 @@ private fun makeNeighborMessage( (if (neighAddr is Inet6Address) "1400" else "0800") + (if (neighAddr is Inet6Address) "1400" else "0800") + "0100" + // type (1 == NDA_DST, for neighbor messages) "0100" + // type (1 == NDA_DST, for neighbor messages) // IP address: // IP address: encodeToString(neighAddr.address, false /* upperCase */) + encodeToString(neighAddr.address) + // -- struct nlattr: NDA_LLADDR -- // -- struct nlattr: NDA_LLADDR -- "0a00" + // length = 10 "0a00" + // length = 10 "0200" + // type (2 == NDA_LLADDR, for neighbor messages) "0200" + // type (2 == NDA_LLADDR, for neighbor messages) Loading