diff options
author | Erik Kline <ek@google.com> | 2015-05-15 18:49:17 +0900 |
---|---|---|
committer | Erik Kline <ek@google.com> | 2015-05-20 12:08:55 +0900 |
commit | abd3142dcae02026689b939c363329b822b7cc0a (patch) | |
tree | f880c9210be6b53d028608e82562fdda3e0efe99 /core/tests | |
parent | f357c96273ad8c0f7acc0e15213cced2f0b21883 (diff) | |
download | frameworks_base-abd3142dcae02026689b939c363329b822b7cc0a.zip frameworks_base-abd3142dcae02026689b939c363329b822b7cc0a.tar.gz frameworks_base-abd3142dcae02026689b939c363329b822b7cc0a.tar.bz2 |
Close netlink socket when shutting down IpReachabilityMonitor
This forces the NetlinkSocketObserver thread to exit quickly, rather
than lingering until the next random netlink neighbor multicast message
arrives.
Additionally, add a small unittest to verify that multiple calls to
NetlinkSocket#close() are safe.
Change-Id: I101730fad7eee72f9c6e8a7e7bd10c634f2ceab4
Diffstat (limited to 'core/tests')
-rw-r--r-- | core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java b/core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java index b32de78..c599fe3 100644 --- a/core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java +++ b/core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java @@ -90,4 +90,27 @@ public class NetlinkSocketTest extends TestCase { s.close(); } + + public void testRepeatedCloseCallsAreQuiet() throws Exception { + // Create a working NetlinkSocket. + NetlinkSocket s = new NetlinkSocket(OsConstants.NETLINK_ROUTE); + assertNotNull(s); + s.connectToKernel(); + NetlinkSocketAddress localAddr = s.getLocalAddress(); + assertNotNull(localAddr); + assertEquals(0, localAddr.getGroupsMask()); + assertTrue(0 != localAddr.getPortId()); + // Close once. + s.close(); + // Test that it is closed. + boolean expectedErrorSeen = false; + try { + localAddr = s.getLocalAddress(); + } catch (ErrnoException e) { + expectedErrorSeen = true; + } + assertTrue(expectedErrorSeen); + // Close once more. + s.close(); + } } |